decimal(20,0)の適切な.Netデータ型
-
03-07-2019 - |
質問
decimal(20,0)データ型を返すSQLがあります。 SSISには、foreachループを含むパッケージがあります。私の変数マッピングでは、どのタイプの変数にマッピングしますか? Int32、Int64、doubleを試しましたが、エラー"変数に割り当てられている値の型" User :: iID"現在の変数タイプとは異なります..."
解決
SSIS変数デザイナーは、私の場合、decimal(18,2)値を配置するために選択するDecimalまたはNumericデータ型を表示しませんでした。
変数をObjectに変更し、1つのストアドプロシージャの結果セットからDecimal(18,2)値を読み取り、2番目のSPにMoney型のパラメーターとして渡すことができました。
だから" Object"を使用します変数リストで自分に合ったタイプが見つからない場合。
他のヒント
Decimalをもう試しましたか?
SSISには、Decimal型とNumeric型があります。これらのいずれかを使用することができ、それが通過します(おそらく、ユニオンオール上では、それらが同じ精度とスケールであることを確認する必要があります)。
データ型の詳細については、こちらをご覧ください。
.NET decimalには、 decimal.ToInt64()、 decimal.ToInt32()などのメソッドがあります。
浮動小数点または小数が推奨です。
SQL decimal(20,0)の精度は20です。これは、13バイトのストレージに相当します。 .Net 10進数は16バイトであり、動作するはずです。
SQLデータ型をInt64パッケージ変数に入れる前に、Int64に変換する必要があります。
出力パラメーターとしてどのように取得しますか?
データフローでは、明らかに10進数/数値に読み取ってから、データ変換コンポーネントでInt64に変換します。
SQLコマンドの実行タスクから出力パラメーターを直接マップしようとする場合、おそらく一時オブジェクトパッケージ変数を使用してから、スクリプトタスクでそれを実際のInt64パッケージ変数に変換する必要があります。