チュートリアル: Transact-SQL のユーザー定義関数のデバッグ
このトピックの内容は、次の製品に該当します。
Visual Studio Ultimate |
Visual Studio Premium |
Visual Studio Professional |
Visual Studio Express |
---|---|---|---|
この例では、AdventureWorks2008 データベースの ufnGetStock という名前の既存のユーザー定義関数 (UDF) を使用します。この関数は、所定の ProductID に対してストックされたアイテムの数を返します。
この例で、UDF を複数回呼び出すストアド プロシージャを作成します。このストアド プロシージャは、さまざまなパラメーターで UDF を呼び出します。したがって、UDF を通じてさまざまな実行パスをたどることができます。この例では、1 つの Transact-SQL オブジェクト (ストアド プロシージャ) から別のオブジェクト (関数) にジャンプする方法も説明されます。手順は、「チュートリアル: Transact-SQL ストアド プロシージャのデバッグ」での手順と同様です。
サーバー エクスプローラーで関数にステップ インすることで、ダイレクト データベース デバッグを行うこともできます。
ユーザー定義関数をデバッグするには
新しい SQL Server プロジェクトで、AdventureWorks2008 サンプル データベースへの接続を確立します。詳細については、「方法: サーバー エクスプローラーを使用してデータベースに接続する」を参照してください。
下のサンプルにあるコードを使用して、新しいストアド プロシージャを作成し、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