変数とパラメータの使用 (データベース エンジン)

Transact-SQL には、Transact-SQL ステートメント間でデータを渡す方法がいくつかあります。その一部を次に示します。

  • Transact-SQL ローカル変数
    Transact-SQL 変数は、データ値を保持できる Transact-SQL バッチおよびスクリプト内のオブジェクトです。変数を宣言または定義した後、バッチ内の 1 つのステートメントでその変数に値を設定し、同じバッチ内の後のステートメントで変数からその値を取得できます。次に例を示します。

    USE AdventureWorks;
    GO
    DECLARE @EmpIDVar int;
    SET @EmpIDVar = 1234;
    SELECT *
    FROM HumanRresources.Employee
    WHERE EmployeeID = @EmpIDVar;
    
    ms175852.note(ja-jp,SQL.90).gifメモ :
    バッチでは、最大 10,000 個のローカル変数を宣言できます。
  • Transact-SQL パラメータ
    パラメータは、ストアド プロシージャとそのストアド プロシージャを実行するバッチまたはスクリプト間でデータを渡すために使用するオブジェクトです。パラメータは入力パラメータにも出力パラメータにもできます。次に例を示します。

    USE AdventureWorks;
    GO
    CREATE PROCEDURE ParmSample @EmpIDParm int AS
    SELECT EmployeeID, Title
    FROM HumanResources.Employee
    WHERE EmployeeID = @EmpIDParm
    GO
    
    EXEC ParmSample @EmpIDParm = 109
    GO
    

アプリケーションではアプリケーション変数とパラメータ マーカーを使用して、Transact-SQL ステートメントから返されたデータが操作されます。

  • アプリケーション変数
    C、C++、Basic、Java などのアプリケーション プログラミング言語には、データを保持するための独自の変数が用意されています。データベース API を使用するアプリケーションでは、Transact-SQL ステートメントから返されたデータをアプリケーション変数に移動しないと、そのデータを操作できません。通常、この移動はバインドという処理によって行われます。アプリケーションにより、API 関数を使用して結果セット列がプログラム変数にバインドされます。行がフェッチされると、API プロバイダまたはドライバによって、列からバインド先のプログラム変数にデータが移動されます。
  • パラメータ マーカー
    パラメータ マーカーは ADO、OLE DB、および ODBC ベースのデータベース API によってサポートされます。パラメータ マーカーは疑問符 (?) で、Transact-SQL ステートメント内の入力式の位置に追加されます。その後、アプリケーション変数にバインドされます。これにより、アプリケーション変数のデータを Transact-SQL ステートメントへの入力として使用できます。また、パラメータ マーカーにより、ストアド プロシージャの出力パラメータやリターン コードをアプリケーション変数にバインドすることもできます。プロシージャが実行されると、出力データがバインド先の変数に返されます。DB-Library API でも、ストアド プロシージャ パラメータやリターン コードをプログラム変数にバインドできます。

参照

その他の技術情報

DECLARE @local\_variable (Transact-SQL)
SELECT (Transact-SQL)
関数 (Transact-SQL)
SET @local\_variable (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手