変数とパラメーターの使用 (データベース エンジン)
Transact-SQL には、Transact-SQL ステートメント間でデータを渡す方法がいくつかあります。その一部を次に示します。
Transact-SQL ローカル変数
Transact-SQL 変数は、データ値を保持できる Transact-SQL バッチおよびスクリプト内のオブジェクトです。変数を宣言または定義した後、バッチ内の 1 つのステートメントでその変数に値を設定し、同じバッチ内の後のステートメントで変数からその値を取得できます。次に例を示します。
USE AdventureWorks2008R2; GO DECLARE @EmpIDVar int; SET @EmpIDVar = 1234; SELECT * FROM HumanRresources.Employee WHERE BusinessEntityID = @EmpIDVar;
注 バッチでは、最大 10,000 個のローカル変数を宣言できます。
Transact-SQL パラメーター
パラメーターは、ストアド プロシージャとそのストアド プロシージャを実行するバッチまたはスクリプト間でデータを渡すために使用するオブジェクトです。パラメーターは入力パラメーターにも出力パラメーターにもできます。次に例を示します。
USE AdventureWorks2008R2; GO CREATE PROCEDURE ParmSample @EmpIDParm int AS SELECT BusinessEntityID, JobTitle FROM HumanResources.Employee WHERE BusinessEntityID = @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 でも、ストアド プロシージャ パラメーターやリターン コードをプログラム変数にバインドできます。