次の方法で共有


チュートリアル : 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 ストアド プロシージャのデバッグ」で説明する手順と同様です。

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

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

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

  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

参照

概念

SQL のデバッグ

参照

サーバー エクスプローラ/データベース エクスプローラ