クエリ パラメーターを SQL 実行タスクの変数にマップする方法
このトピックでは、SQL 実行タスクでパラメーター化された SQL ステートメントを使用して、SQL ステートメント内の変数とパラメーター間のマッピングを作成する方法を説明します。
異なる種類の接続で使用する SQL 実行タスク、パラメーター マーカー、およびパラメーター名の詳細については、「SQL 実行タスク」および「SQL 実行タスクのパラメーターとリターン コード」を参照してください。
クエリ パラメーターを変数にマップするには
SQL Server データ ツール (SSDT) で、処理する Integration Services パッケージを開きます。
ソリューション エクスプローラーで、パッケージをダブルクリックして開きます。
[制御フロー] タブをクリックします。
SQL 実行タスクがまだパッケージに含まれていない場合、SQL 実行タスクをパッケージの制御フローに追加します。 詳細については、「制御フローのタスクまたはコンテナーを追加または削除する」を参照してください。
SQL 実行タスクをダブルクリックします。
パラメーター化 SQL コマンドを、次のいずれかの方法で指定します。
直接入力を使用して、SQLStatement プロパティに SQL コマンドを入力します。
直接入力を使用して、[クエリの作成] をクリックし、クエリ ビルダーで用意されているグラフィック ツールを使用して、SQL コマンドを作成します。
ファイル接続を使用し、SQL コマンドが含まれるファイルを参照します。
変数を使用し、SQL コマンドが含まれる変数を参照します。
パラメーター化された SQL ステートメントで使用するパラメーター マーカーは、SQL 実行タスクが使用する接続の種類によって異なります。
接続の種類
パラメーター マーカー
ADO
?
ADO.NET および SQLMOBILE
@<parameter name>
ODBC
?
EXCEL および OLE DB
?
次の表に、SELECT コマンドの例を接続マネージャーの種類別に示します。 パラメーターは、WHERE 句で使用されるフィルター値を提供します。 この例では、SELECT を使用して、2 つのパラメーターで指定された値よりも ProductID の値が大きい製品と小さい製品を、 AdventureWorks2012 の Product テーブルから返します。
接続の種類
SELECT 構文
EXCEL、ODBC、OLEDB
SELECT* FROM Production.Product WHERE ProductId > ? AND ProductID < ?
ADO
SELECT* FROM Production.Product WHERE ProductId > ? AND ProductID < ?
ADO.NET
SELECT* FROM Production.Product WHERE ProductId > @parmMinProductID AND ProductID < @parmMaxProductID
ストアド プロシージャでパラメーターを使用する例については、「SQL 実行タスクのパラメーターとリターン コード」を参照してください。
[パラメーター マッピング] をクリックします。
パラメーター マッピングを追加するには、[追加] をクリックします。
[パラメーター名] ボックスに名前を入力します。
使用するパラメーター名は、SQL 実行タスクが使用する接続の種類によって異なります。
接続の種類
パラメーター名
ADO
Param1、Param2、...
ADO.NET および SQLMOBILE
@<parameter name>
ODBC
1, 2, 3, …
EXCEL および OLE DB
0, 1, 2, 3, …
[変数名] 一覧で、変数を選択します。 詳細については、「パッケージ内のユーザー定義変数のスコープの追加、削除、変更」を参照してください。
[方向] 一覧で、パラメーターが入力、出力、または戻り値のいずれであるかを指定します。
[データ型] 一覧で、パラメーターのデータ型を設定します。
重要 パラメーターのデータ型は、変数のデータ型と互換性がある必要があります。
SQL ステートメントの各パラメーターに対して、手順 8. ~ 11. を繰り返します。
重要 パラメーター マッピングの順序は、SQL ステートメントで使用されるパラメーターの順序と同じである必要があります。
[OK] をクリックします。