教你如何調試SQL CLR存儲過程
運用了SQL CLR存儲過程很長時間了,有一點點的小積累,在這里和大家分享一下,看看對大家有沒有幫助。在一個新的 SQL Server 項目中,建立一個到 AdventureWorks 示例數據庫的連接。有關更多信息,請參見如何:連接到數據庫。使用下面第一個示例部分中的代碼創建一個新的存儲過程,并將其命名為“InsertCurrency.cs”。有關更多信息,請參見如何:使用 SQL Server 項目類型進行開發。添加一個通過調用SQL CLR存儲過程來測試它的腳本。在“解決方案資源管理器”中,右擊“TestScripts”目錄,單擊“添加測試腳本”,然后插入下面的第二個示例部分中的代碼。以名稱“InsertCurrency.sql”保存文件。右擊該文件名,然后單擊“設置為默認調試腳本”。
在 InsertCurrency.cs 中設置斷點,然后在“調試”菜單上單擊“啟動”以對該項目進行編譯、部署和單元測試。以黃色箭頭表示的說明性指針在斷點上顯示時,說明正在調試存儲過程。
嘗試不同的調試功能。打開“局部變量”窗口,并在“調試”菜單上單擊“單步執行”以單步執行存儲過程中的一行。注意,“局部變量”窗口中的變量 @mynvarchar 的值已經更改,并且它的值現在顯示為紅色,表示它已經更改。有關更多信息,請參見 使用“局部變量”窗口。
注意
1.服務器可能不會反映在調試器窗口中對變量值的更改。有關更多信息,請參見 SQL 調試限制。
2.打開“監視”窗口。在“文本編輯器”中,拖動 InsertCurrencyCommand 變量到“監視”窗口中的任意位置。
3.該變量隨即添加到受監視的變量列表中。有關更多信息,請參見如何:使用調試器變量窗口。
注意也可以在“監視”窗口中編輯變量的值。在文本編輯器中,右擊 InsertCurrencyCommand.ExecuteNonQuery 行并在快捷菜單上單擊“插入斷點”。在“調試”菜單中單擊“繼續”,調試器將運行代碼直到新的斷點。再次單擊“繼續”完成對存儲過程的調試。“輸出”窗口會顯示一條消息,表明已成功部署存儲過程,并會顯示執行 InsertCurrency.sql 文件中的命令的結果。示例用此代碼替換存儲過程模板。
SQL CLR存儲過程代碼
- using System;
- using System.Data;
- using System.Data.Sql;
- using System.Data.SqlServer;
- using System.Data.SqlTypes;
- public partial class StoredProcedures
- {
- [SqlProcedure]
- public static void InsertCurrency(SqlString currencyCode,
- SqlString name)
- {
- using(SqlConnection conn = new SqlConnection("context connection=true")) {
- SqlCommand cmd = new SqlCommand([your SQL statement], conn);
- }
- InsertCurrencyCommand.CommandText = "insert Sales.Currency"
- + " (CurrencyCode, Name, ModifiedDate) values('"
- + currencyCode.ToString() + "', '"
- + name.ToString() + "', '"
- + DateTime.Now.ToString() + "')";
- InsertCurrencyCommand.ExecuteNonQuery();
- }
- }這是用于執行存儲過程的測試腳本。
- 復制代碼
- - Delete any row that might exist with a key value
- - that matches the one we are going to insert
- DELETE Sales.Currency
- WHERE CurrencyCode = 'eee'
- EXEC InsertCurrency 'eee', 'MyCurr4'
- SELECT * FROM Sales.Currency WHERE CurrencyCode = 'eee'
【編輯推薦】