【问题标题】:How can i use Parameter Mapping in Execute SQL Task in SSIS?如何在 SSIS 的执行 SQL 任务中使用参数映射?
【发布时间】:2012-06-18 21:48:16
【问题描述】:

我正在尝试通过Execute SQL Task 在 SSIS 中使用简单的 select 语句从表中检索 Key 的值。但是没有运气找出这个错误。

我使用了一个字符串数据类型的输入变量,并在Execute SQL Task 的参数映射中使用了这个变量。

执行查询“SELECT cast([Key] as Int) FROM Table where column = ?” 失败并出现以下错误:“发生错误时 将结果提取到类型为 (DBTYPE_I4) 的变量中。可能 失败原因:查询有问题,“ResultSet”属性未设置 正确,参数设置不正确,或连接未建立 正确。

注意:Key 列的数据类型是 tinyint

【问题讨论】:

    标签: sql-server-2008 ssis


    【解决方案1】:

    当参数的默认数据类型保持为“LONG”而不是任何必要的数据类型时,会出现此消息...在您的情况下,这应该是“BYTE”

    【讨论】:

      【解决方案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、单行结果集 参数映射选项卡

      • 变量名:User::input
      • 数据类型:字节
      • 参数名称:0

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2020-01-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多