次の方法で共有


チュートリアル: Transact-SQL のユーザー定義関数のデバッグ

このトピックの内容は、次の製品に該当します。

Visual Studio Ultimate

Visual Studio Premium

Visual Studio Professional

Visual Studio Express

ms165047.DoesApplybmp(ja-jp,VS.100).gif ms165047.DoesApplybmp(ja-jp,VS.100).gif ms165047.DoesApplybmp(ja-jp,VS.100).gif ms165047.DoesNotApplybmp(ja-jp,VS.100).gif

この例では、AdventureWorks2008 データベースの ufnGetStock という名前の既存のユーザー定義関数 (UDF) を使用します。この関数は、所定の ProductID に対してストックされたアイテムの数を返します。

この例で、UDF を複数回呼び出すストアド プロシージャを作成します。このストアド プロシージャは、さまざまなパラメーターで UDF を呼び出します。したがって、UDF を通じてさまざまな実行パスをたどることができます。この例では、1 つの Transact-SQL オブジェクト (ストアド プロシージャ) から別のオブジェクト (関数) にジャンプする方法も説明されます。手順は、「チュートリアル: Transact-SQL ストアド プロシージャのデバッグ」での手順と同様です。

サーバー エクスプローラーで関数にステップ インすることで、ダイレクト データベース デバッグを行うこともできます。

ユーザー定義関数をデバッグするには

  1. 新しい SQL Server プロジェクトで、AdventureWorks2008 サンプル データベースへの接続を確立します。詳細については、「方法: サーバー エクスプローラーを使用してデータベースに接続する」を参照してください。

  2. 下のサンプルにあるコードを使用して、新しいストアド プロシージャを作成し、Test_ufnGetStock と名付けます。詳細については、「方法: SQL Server のデータベース プロジェクトまたはサーバー プロジェクトでデバッグする」を参照してください。

  3. Test_ufnGetStock にブレークポイントを設定します。これは必須ではありません。ダイレクト データベース デバッグにより、プロシージャの先頭行がブレークポイントとして機能するからです。

  4. UDF ufnGetStock にブレークポイントを設定します。

    1. UDF のソース コードを開きます。そのためには、サーバー エクスプローラー[関数] ノードを右クリックして、[ufnGetStock] アイコンをダブルクリックします。

    2. DECLARE ステートメントの隣にある灰色の余白をクリックして、ブレークポイントを設定します。

  5. ストアド プロシージャにステップ インします。プロシージャにパラメーターが指定されていれば、[ストアド プロシージャの実行] ダイアログ ボックスが表示され、値を要求されますが、この場合には、パラメーターはストアド プロシージャ内部にすべてハードコードされています。詳細については、「方法: サーバー エクスプローラーを使用してオブジェクトにステップ インする」を参照してください。

  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