您好,登錄后才能下訂單哦!
基于SQL2005的CLR存儲過程是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
在 SQL Server 2005 中,可以在SQL Server實例中使用以下方法創建數據庫對象:基于 Microsoft .NET Framework 公共語言運行時 (CLR) 創建中的程序集使用編程方法創建。能夠利用由CLR提供的眾多編程模型的數據庫對象包括觸發器、存儲過程、函數、聚合函數和類型。
雖然Transact-SQL是專門為數據庫中的直接數據訪問和操作而設計,但是它沒有提供編程構造來使數據操作和計算更加容易。例如,Transact-SQL 不支持數組、集合、for-each 循環、位轉移或類。
CLR存儲過程提供面向對象的功能,例如封裝、繼承和多態性。現在,相關代碼可以很容易在類和命名空間中進行組織。在使用大量服務器代碼時,這樣可以更容易地組織和維護代碼,通過使用托管代碼而實現某些數據庫功能。
對于計算和復雜的執行邏輯,基于CLR的托管代碼比Transact-SQL 更適合,托管代碼的一個優點是類型安全性,它全面支持許多復雜的任務,包括字符串處理和正則表達式。
通過 .NET Framework 庫中提供的功能,可以訪問數千個預生成的類和例程。可以很容易從任何存儲過程、觸發器或用戶定義函數進行訪問。基類庫包括的類提供用于字符串操作、高級數學運算、文件訪問、加密等的功能。
對于幾乎或根本不需要過程邏輯的數據訪問,還是使用 Transact-SQL。對于具有復雜邏輯的CPU密集型函數和過程最好還是使用托管代碼。
我們看如何在Visual Studio 2005中創建基于SQL Server 2005的CLR存儲過程:
我們打開Visual Studio 2005,在對應數據庫欄目下面有個SQL Server項目,新建立一個項目,命名為StoredStu,確定過后會顯示一個數據庫連接對話框,數據庫連接好后,我們在數據庫中有如下兩個表,如下:
StuInfo(學生信息表)
Nation(民族表)
新建立一個文件,選擇“存儲過程”的選項,命名為StoredStu,在文件中寫入以下的代碼:
using System; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; public partial class StoredProcedures { [Microsoft.SqlServer.Server.SqlProcedure] public static void StoredStu() { // 在此處放置代碼 SqlPipe sp = SqlContext.Pipe; string sql = "Select * from StuInfo"; using (SqlConnection conn = new SqlConnection("context connection=true")) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.Connection = conn; cmd.CommandText = sql; SqlDataReader rdr = cmd.ExecuteReader(); sp.Send(rdr); } } [SqlProcedure] public static void GetStuInfo(string strNationCode) { string sql = "select Stu.StudentName, Stu.StudentNo, Stu.StudentUniversity,Na.NationName from StuInfo Stu inner join Nation Na on Stu.NationCode = Na.NationCode where Stu.NationCode = '" + @strNationCode + "'"; using (SqlConnection conn = new SqlConnection("context connection=true")) { conn.Open(); SqlPipe sp = SqlContext.Pipe; SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.Connection = conn; cmd.CommandText = sql; SqlParameter paramstrNationCode = new SqlParameter("@strNationCode", SqlDbType.VarChar, 11); paramstrNationCode.Direction = ParameterDirection.Input; paramstrNationCode.Value = strNationCode; cmd.Parameters.Add(paramstrNationCode); SqlDataReader rdr = cmd.ExecuteReader(); sp.Send(rdr); } } };
現在我們先對其進行編譯,在“生成”菜單中選擇“生成解決方案”,當編譯完工程后,就需要為其進行部署了。同樣選擇“生成”菜單中的“部署解決方案”, 這樣就會自動將寫好的存儲過程部署到 SQL Server 2005 中去。
為了確保SQL可以執行托管代碼,我們還需要在SQL Server 2005中,執行下面的語句:
EXEC sp_configure "clr enabled", 1; RECONFIGURE WITH OVERRIDE; GO
執行顯示的結果如下:
“配置選項'clr enabled' 已從0 更改為1。請運行RECONFIGURE 語句進行安裝。”
這樣就可以創建好CLR存儲過程了。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。