2009-04-30 11 views
0

小数点(20,0)データ型を返すSQLがあります。 SSISでは、私はforeachループを持つパッケージを持っています。私の変数マッピングでは、どのタイプの変数をマップしますか?私はInt32、Int64、doubleを試しましたが、エラー "変数に割り当てられている値の型" User :: iIDは現在の変数の型と異なります... "適切な.Netデータ型小数点(20,0)

答えて

2

SSIS変数デザイナーは、私の場合、10進数(18,2)の値を入れるDecimalまたはNumericデータ型を表示しませんでした。

変数をObjectに変更し、1つのストアドプロシージャの結果セットからDecimal(18,2)値を読み取り、それを2番目のSPにMoney型のパラメータとして渡すことができました。

私はあなたのために働く変数リストでタイプを見つけることができない場合は "オブジェクト"を使用します。

2

Decimal ?

+0

ssisデザイナには小数点または浮動小数点のオプションはありません – Jeremy

0

の.NET小数は浮動小数点または私の推薦であろう等の方法decimal.ToInt64()decimal.ToInt32()

0

を有しています。

+0

ssisデザイナで小数点または浮動小数点のオプションはありません – Jeremy

0

SQL小数(20,0)の精度は20で、13バイトの記憶域に相当します。 .Netの小数は16バイトであり、うまくいくはずです。

1

SSISには、10進数と数値の型があります。あなたはこれらのどちらかを使用することができます(ユニオンオールでは、同じ精度とスケールであることを確認する必要があります)。

データタイプの詳細については、hereを参照してください。

+0

どこですか?変数ウィンドウでは、Boolean、DBNull、Double、Int16、Int32、Int64、Object、SByte、String、UInt32、UInt64を選択できますが、10進数または数値は使用できません。 – Jeremy

0

Int64パッケージ変数に入れる前に、SQLデータ型をInt64に変換する必要があります。

どのように出力パラメータとして取得していますか?

データフローでは、データ変換コンポーネントで10進数と数値に変換してからInt64に変換します。

SQLコマンドの実行タスクから直接出力パラメータをマップする場合は、一時オブジェクトパッケージ変数を使用し、スクリプトタスクで実際のInt64パッケージ変数に変換する必要があります。