逐步解說:偵錯 SQL CLR 使用者定義的純量函式
更新:2007 年 11 月
這個主題適用於:
版本 |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express 版 |
||||
Standard 版 |
||||
Pro/Team 版 |
表格圖例:
套用 |
|
不套用 |
|
預設隱藏的命令。 |
這個範例將示範如何偵錯 SQL CLR 使用者定義函式 (UDF)。它會在 AdventureWorks 範例資料庫中建立新的 SQL CLR 使用者定義函式。
注意事項: |
---|
您所看見的對話方塊與功能表命令可能會與 [說明] 中所描述的有所不同,視您所使用的設定或版本而定。若要變更設定,請從 [工具] 功能表中選擇 [匯入和匯出設定]。如需詳細資訊,請參閱 Visual Studio 設定。 |
若要偵錯 SQL CLR 使用者定義的純量函式:
在新的 SQL Server 專案中,建立與 [AdventureWorks] 範例資料庫的連接。如需詳細資訊,請參閱 HOW TO:連接資料庫。
使用下列第一個範例區段中的程式碼建立新函式,並將其命名為 OrderCount.cs。如需詳細資訊,請參閱 HOW TO:使用 SQL Server 專案類型開發。
藉由將指令碼包含在 SELECT 陳述式中,加入能夠測試函式的指令碼。在 [方案總管] 中,以滑鼠右鍵按一下 [TestScripts] 目錄,再按 [加入測試指令碼],然後插入底下第二個範例區段中的程式碼。使用名稱 CallOrderCount.sql 來儲存檔案。在檔名上按一下滑鼠右鍵,並選擇 [設定為預設偵錯指令碼]。
在會將 SqlCommand 執行個體化之那一行的 OrderCount.cs中置放中斷點,然後在 [偵錯] 功能表上,按一下 [啟動],對專案進行編譯、部署和單元測試。當中斷點上出現以黃色箭頭表示的指令指標時,即表示您正在偵錯函式。
嘗試不同的偵錯功能。
使用 [偵錯] 功能表的 [逐步執行],逐步執行將 SqlCommand 執行個體化的陳述式。
在 [區域變數] 視窗中,開啟變數 sqlComm (其為 SqlCommand),然後檢視該成員。
在 [偵錯] 功能表上按一下 [逐步執行],逐步執行函式中的某一行。請注意,sqlComm.CommandText 成員已執行個體化。
在 [文字編輯器] 中,將 sqlComm 拖曳至 [監看式] 視窗中的任何位置。該變數現在將加入被監看變數的清單內。
再按 [逐步執行],然後注意標記為 [動態 T-SQL] 的新視窗會開啟,顯示將要執行的 SQL 陳述式。
選擇 [逐步執行] 執行該陳述式,然後返回函式。
再按一次 [繼續],然後注意開啟的第二個 [動態 T-SQL] 視窗,它會顯示傳回函式值的程式碼。
再次按 [繼續],以完成此函式的偵錯動作。
範例
此為建立函式所需的程式碼。
using System;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read)]
public static int OrderCount()
{
using (SqlConnection conn = new SqlConnection("context connection=true"))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT 42";
//cmd = new SqlCommand("SELECT 42",conn);
int result = (int)cmd.ExecuteScalar();
return result;
}
}
};
此為呼叫函式的測試指令碼。
SELECT dbo.OrderCount()
請參閱
工作
HOW TO:建立及執行 CLR SQL Server 使用者定義函式