• 締切済み

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について初心者であり、ネットや本でいろいろ探しているのですがなかなかうまくいかず。。。 大変お手数ですが、どなたか教えて頂けますと大変に助かります。 どうか宜しくお願い致します。

みんなの回答

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

SQL実行タスクに変数を割り当てる場合は、 ・Statementには 「DELETE FROM [tblTesttable] WHERE TIMEID=?」と指定します。 ・パラメータマッピングを指定します 変数名:User::valtimeを選択 方向:Input データ型:DATE パラメータ名:0 (たぶん、ここがミソ) パラメータサイズ:-1 (デフォルトのまま。SP2が当たってないとないかも) パラメータが複数ある場合は、パラメータ名を0,1,2..という風に増やします。 そうすると、パラメータが「?」に順番に割り当てられていきます。

blissmc78
質問者

お礼

jamshid6様 大変にお忙しい中、早速の回答頂き大変感謝致します!!!!! アドバイス頂いた内容に従って設定したところ、うまく実行されました。 おっしゃるとおりパラメータマッピングの箇所がポイントでした。 本当にありがとうございました!

関連するQ&A