共用方式為


逐步解說:偵錯 Transact-SQL 使用者定義函式

這個主題適用於:

Visual Studio Ultimate

Visual Studio Premium

Visual Studio Professional

Visual Studio Express

ms165047.DoesApplybmp(zh-tw,VS.100).gif ms165047.DoesApplybmp(zh-tw,VS.100).gif ms165047.DoesApplybmp(zh-tw,VS.100).gif ms165047.DoesNotApplybmp(zh-tw,VS.100).gif

此範例使用 AdventureWorks2008 資料庫中名為 ufnGetStock 的現有使用者定義函式 (UDF)。此函式會傳回指定 ProductID 的內建項目數量。

範例中會建立呼叫 UDF 數次的預存程序。預存程序會使用不同的參數呼叫 UDF,讓您能夠在整個 UDF 中遵循不同的執行路徑。此範例也示範從一個 Transact-SQL 物件 (預存程序) 跳至另一個物件 (函式)。步驟與 逐步解說:偵錯 Transact-SQL 預存程序 中的步驟類似。

您也可以在 [伺服器總管] 中逐步執行函式,以進行「直接資料庫偵錯」(Direct Database Debugging)。

偵錯使用者定義函式

  1. 在新的 SQL Server 專案中,建立與 AdventureWorks2008 範例資料庫的連接。如需詳細資訊,請參閱 HOW TO:使用伺服器總管連接到資料庫

  2. 使用下列範例區段的程式碼建立新的預存程序,並將其命名為 Test_ufnGetStock。如需詳細資訊,請參閱 HOW TO:以 SQL Server 資料庫專案或伺服器專案偵錯

  3. 在 Test_ufnGetStock 中設定中斷點。這是選擇性的步驟,因為「直接資料庫偵錯」會將程序中的第一行當作中斷點。

  4. 在 UDF ufnGetStock 中設定中斷點。

    1. 以滑鼠右鍵按一下 [伺服器總管] 中的 [函式] 節點,然後按兩下 [ufnGetStock] 圖示。

    2. 以滑鼠左鍵按一下 DECLARE 陳述式旁的灰色邊界,以設定中斷點。

  5. 逐步執行預存程序。如果程序具有參數,就會出現 [執行預存程序] 對話方塊,要求輸入參數的值。此時,參數在預存程序中均為硬式編碼。如需詳細資訊,請參閱 HOW TO:使用伺服器總管逐步執行物件

  6. 嘗試不同的偵錯功能。

    1. 使用 F11 鍵或 [逐步執行] 按鈕,逐步執行程式碼。在 SELECT 陳述式中,當您再次按下 F11 鍵時,您會逐步執行至 UDF。逐步執行 UDF 直到您結束回到預存程序,然後再繼續進行。

    2. 視輸入的參數而定,您可以在 UDF 中觀察到不同的執行路徑。您可以在 [區域變數] 視窗中看見 UDF 中變數的值,將游標移到變數上也可以看見這些值。

範例

這是呼叫使用者定義函式的預存程序程式碼。

ALTER PROCEDURE Test_ufnGetStock 
AS
    SELECT dbo.ufnGetStock(1) as CurrentStock   -- non-zero inventory
    SELECT dbo.ufnGetStock(316) as CurrentStock -- zero inventory
    SELECT dbo.ufnGetStock(5) as CurrentStock   -- no such product

請參閱

概念

偵錯 Transact-SQL

其他資源

Server Explorer/Database Explorer