チュートリアル : T-SQL のユーザー定義関数のデバッグ
更新 : 2007 年 11 月
このトピックの内容は、次の製品に該当します。
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
||||
Standard |
||||
Pro/Team |
表の凡例 :
対象 |
|
該当なし |
|
既定で非表示のコマンド |
この例では、AdventureWorks データベースにある ufnGetStock という名前の既存のユーザー定義関数 (UDF) を使用します。この関数は、指定した ProductID の商品の在庫数を返します。
この例では、UDF を数回呼び出すストアド プロシージャを作成します。ストアド プロシージャから異なるパラメータで UDF が呼び出されるため、UDF によって異なる実行パスをたどることができます。また、ある T-SQL オブジェクト (ストアド プロシージャ) から別の T-SQL オブジェクト (関数) へジャンプする方法についても説明します。手順は、「チュートリアル : T-SQL ストアド プロシージャのデバッグ」で説明する手順と同様です。
また、サーバー エクスプローラの関数にステップ インすることで、ダイレクト データベース デバッグを実行することもできます。
ユーザー定義関数をデバッグするには
新しい SQL Server プロジェクトで、AdventureWorks サンプル データベースとの接続を確立します。詳細については、「方法 : データベースに接続する」を参照してください。
後述するサンプルにあるコードを使用して、新しいストアド プロシージャを作成し、Test_ufnGetStock と名前を付けます。詳細については、「方法 : SQL Server のプロジェクトの種類を使用して開発する」を参照してください。
Test_ufnGetStock にブレークポイントを設定します。この操作は、オプションです。ダイレクト データベース デバッグによって、プロシージャの最初の行がブレークポイントとして機能するためです。
UDF の ufnGetStock にブレークポイントを設定します。
サーバー エクスプローラの [関数] ノードを右クリックし、UDF のソース コードを開きます。次に、[ufnGetStock] のアイコンをダブルクリックします。
DECLARE ステートメントの横にある灰色のマージンをクリックして、ブレークポイントを設定します。
ストアド プロシージャにステップ インします。プロシージャにパラメータが設定されている場合、[ストアド プロシージャの実行] ダイアログ ボックスが開き、パラメータ値を入力するように求められます。この場合、パラメータはすべてストアド プロシージャ内でハードコーディングされます。詳細については、「方法 : サーバー エクスプローラを使用してオブジェクトにステップ インする」を参照してください。
いろいろなデバッグ機能を試してください。
F11 キーまたは [ステップ イン] ボタンでコード全体をステップ実行します。SELECT ステートメントで改めて F11 キーを押すと、UDF にステップ インします。UDF 全体のステップ実行を終了してから、ストアド プロシージャの実行に戻ります。
入力パラメータによって、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