4

我正在尝试Key使用 SSIS 中的简单选择语句通过Execute SQL Task. 但是没有运气弄清楚这个错误。

我使用了一个字符串数据类型的输入变量,并在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

将查询写为 -> SELECT cast([Key] as Int) as Key FROM Table where column = ?

于 2012-06-19T16:15:55.870 回答
2

Tinyint不是 i4,它是DT_UI1http://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

第 1 列的结果映射到 User::output

执行 SQL 任务后检查值,结果为 2(预期)

于 2012-06-19T02:42:34.337 回答