- 締切済み
SSIS 変数の値をSQL実行タスクで使用する方法
みなさま初めまして。 SSISの変数利用について教えて頂きたく、何卒宜しく願いいたします。 現在、SSISの変数に入った値をSQL実行タスクで実行(正確には、変数の値を含むレコードを削除)したく、他スレッドを参考にし、下記設定を行おうとしたのですが、エラーが出力され登録が出来ません。。 SQL実行タスク ->左メニューより、「式」を選択 ->Expressionsにて、SqlStatementSourceを選択 ->下記式を記述 ----------------------------- DELETE FROM [tblTesttable] WHERE TIMEID = @[User::valtime] ----------------------------- 行いたいことは、テーブル(tblTesttable)から、項目TIMEIDの値がユーザ変数(valtime)と同じレコードを削除するという内容です。 上記式を記述し、「式の評価」を行うと、下記エラーが出力されてしまいます。。。 ------------------------------------------------------ 式"DELETE FROM [tblTesttable] WHERE TIMEID = @[User::valtime]"を解析できませんでした。この式には無効なトークン、不完全なトークン、または無効な要素が含まれている可能性があります。また適切な形式でないか、かっこなどの必要な要素の一部が不足している可能性があります。 ------------------------------------------------------- SSISについて初心者であり、ネットや本でいろいろ探しているのですがなかなかうまくいかず。。。 大変お手数ですが、どなたか教えて頂けますと大変に助かります。 どうか宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- jamshid6
- ベストアンサー率88% (591/669)
SQL実行タスクに変数を割り当てる場合は、 ・Statementには 「DELETE FROM [tblTesttable] WHERE TIMEID=?」と指定します。 ・パラメータマッピングを指定します 変数名:User::valtimeを選択 方向:Input データ型:DATE パラメータ名:0 (たぶん、ここがミソ) パラメータサイズ:-1 (デフォルトのまま。SP2が当たってないとないかも) パラメータが複数ある場合は、パラメータ名を0,1,2..という風に増やします。 そうすると、パラメータが「?」に順番に割り当てられていきます。
お礼
jamshid6様 大変にお忙しい中、早速の回答頂き大変感謝致します!!!!! アドバイス頂いた内容に従って設定したところ、うまく実行されました。 おっしゃるとおりパラメータマッピングの箇所がポイントでした。 本当にありがとうございました!