3

SQL テーブルから新しい GUID のリストを取得する SSIS パッケージがあります。次に、GUID を文字列変数に分割して、コンマで区切るようにしました。変数にどのように表示されるかの例は次のとおりです。

'5f661168-aed2-4659-86ba-fd864ca341bc','f5ba6d28-7283-4bed-9f11-e8f6bef225c5'

問題はデータ フロー タスクにあります。この変数を SQL クエリのパラメーターとして使用してソース データを取得しましたが、結果を取得できません。WHERE 句が次のようになっている場合:

WHERE [GUID] IN (?) 

無効な文字エラーが発生したため、暗黙的な変換が思ったように GUID で機能しないことがわかりました。これが単一の GUID である場合、GUID の周りに {} を配置することでこれを解決できますが、実行時に取得する必要がある 4 つまたは 5 つの異なる GUID が存在する可能性があります。

私はこれでそれを回避できると考えています:

WHERE CAST([GUID] AS VARCHAR(50)) IN (?)

しかし、これは単に結果を生成せず、現在のテストには2つあるはずです.

これを達成する方法があるに違いないと思います...何が欠けていますか?

4

1 に答える 1

7

少なくとも、提供したメカニズムを使用しないとできません。

値を連結して、それをパラメーターで機能させることはできません。

私はこの点で間違っていることが証明されても構わないと思っていますが、私がそれを機能させることができれば、私はのろわれます.

どうすればそれを機能させることができますか?

トリックは、古い学校に行き、文字列の構築/連結を介してクエリを作成することです。

私のパッケージでは、2 つの変数filterquery. filter は、すでに実行している連結になります。

クエリは式になります(右クリック、プロパティ:EvaluateAsExpressionをTrueに設定、式は次のようになります"SELECT * FROM dbo.RefData R WHERE R.refkey IN (" + @[User::filter] + ")"

データ フローで、ソースを変数から SQL コマンドに変更します。マッピングは必要ありません。

基本的なルック アンド フィールは次のようになります

ここに画像の説明を入力

OLE ソース クエリ

ここに画像の説明を入力

于 2012-07-19T19:42:18.757 に答える