私は単純なタスクであるべきものを持っています-SQL実行タスクからResultSetを使用してユーザー変数を設定します
SELECT MainID FROM TableA WHERE TableA_ID = 1`
(これは、1 つの列と 1 つの行のみを返します)。
MainID は現在、ユーザー定義のデータ型としてデータベースに格納されています。値は XXXX.Y の形式で保存されます (例: 8008.1)。
UserVariable を String データ型に変更すると、ResultSet を STRING/NUMERIC/FLOAT にキャストまたは変換しても問題なく値を割り当てることができます。
SELECT CAST(MainID as NUMERIC(9,1)) as 'MainID' FROM TableA WHERE TableA_ID = 1;
SELECT CAST(MainID as FLOAT) as 'MainID' FROM TableA WHERE TableA_ID = 1;
SELECT CAST(MainID as VARCHAR(10)) as 'MainID' FROM TableA WHERE TableA_ID = 1;
また
SELECT CONVERT(NUMERIC(9,1), MainID) as 'MainID' FROM TableA WHERE TableA_ID = 1;
SELECT CONVERT(FLOAT, MainID) as 'MainID' FROM TableA WHERE TableA_ID = 1;
SELECT CONVERT(VARCHAR(10), MainID) as 'MainID' FROM TableA WHERE TableA_ID = 1;
ただし、ユーザー変数のデータ型が DOUBLE の場合、値を割り当てることができません。次のエラー メッセージが表示されます。
[SQL タスクの実行] エラー: 変数 "dUserVariable" への値の割り当て中にエラーが発生しました: "変数 "User::dUserVariable" に割り当てられている値の型は、現在の変数の型と異なります。実行中に変数の型が変更されない可能性があります. 変数の型は厳密ですが、Object 型の変数は例外です。".
私はSSISにかなり慣れていないので、この変換を行う方法に少し困惑しています。
何か案は?