4

Keyを介して SSIS の単純な選択ステートメントを使用して、テーブルからの値を取得しようとしていますExecute SQL Task。しかし、このエラーを理解することはできません。

文字列データ型の入力変数を 1 つ使用し、この変数を のパラメータ マッピングで使用しましたExecute SQL Task

「SELECT cast([Key] as Int) FROM Table where column = ?」というクエリを実行する 次のエラーで失敗しました:「結果をタイプ (DBTYPE_I4) の変数に抽出中にエラーが発生しました」。考えられる失敗の理由: クエリの問題、「ResultSet」プロパティが正しく設定されていない、パラメーターが正しく設定されていない、または接続が正しく確立されていない。

注:Key列のデータ型はtinyint

4

3 に答える 3

13

このメッセージは、パラメーターのデフォルトのデータ型が必要なものではなく「LONG」のままである場合に発生します...あなたの場合、これは「BYTE」である必要があります

パラメータ マッピング

于 2015-08-11T13:29:30.607 に答える
2

Tinyint は i4 ではなく、DT_UI1です。http://msdn.microsoft.com/en-us/library/ms345165.aspx

SSIS タイプをバイトに変更すると、クエリの結果を値に割り当てることができるはずです。

Variable User::input  Data Type Byte  Value 2
Variable User::output Data Type Byte  Value 0

ソース クエリSELECT CAST(1 AS tinyint) AS [key], ? AS foo

SQL タスクの実行、OLE DB CM、単一行の結果セット パラメータ マッピング タブ

  • 変数名: ユーザー::入力
  • データ型: バイト
  • パラメータ名: 0

User::output にマップされた列 1 の結果

SQL タスクの実行後に値を検査すると、結果は 2 (予期される) です

于 2012-06-19T02:42:34.337 に答える
2

クエリを次のように記述します -> SELECT cast([Key] as Int) as Key FROM Table where column = ?

于 2012-06-19T16:15:55.870 に答える