【问题标题】:SSIS convert object variable to string in expression builderSSIS在表达式生成器中将对象变量转换为字符串
【发布时间】:2019-09-01 16:12:49
【问题描述】:

我的 ssis 包中有一个查询,它使用 xml 路径在执行 sql 任务中返回单行以分号分隔的值。我有一个名为 email_list 的用户变量,然后将其设置为 ResultSet 作为单行。但是当我运行它时,我得到一个错误:

值类型(___ComObject)只能转换为object类型的变量

我意识到必须将变量 email_list 设置为 Object 类型,但如果我这样做,然后尝试在电子邮件任务的表达式构建器的 ToLine 字段中使用它,则表达式不会计算并引发错误.

我在这里看到了提供脚本任务解决方案的文章,但我不想要任何脚本 - 如何在表达式构建器本身中通过将对象转换/转换为字符串来完成?

如果无法在表达式生成器中完成,解决方法是什么?

我在执行sql任务中的查询是:

SELECT STUFF((SELECT ';' + email 
        FROM booklist..books
        FOR XML PATH('')) ,1,1,'') AS email_address

【问题讨论】:

  • 是否有理由将 XML 存储在 Object 类型的变量中而不是 String 中
  • @billinkc - 我使用了 stuff() 所以我可以得到一行分号分隔的值,如下所示:xxxyy@gmail.com;abcdef@yahoo.com;32ddgf@aol.com跨度>
  • 你不能用'cast(stuff... As varchar(8000)) as ToList'包装东西调用

标签: ssis


【解决方案1】:

表达式语言不支持对象类型。在您的情况下,您应该能够将结果转换为字符串数据类型

SELECT CAST(STUFF((SELECT ';' + email 
        FROM booklist..books
        FOR XML PATH('')) ,1,1,'') AS varchar(8000)) AS email_address

【讨论】:

    【解决方案2】:

    如果您从 SQL 查询中获取输入,那么您可以使用 cast 函数将其更改为字符串 ..

    From Proc output ::
    Select @output 
    we can take it this way,
    Select cast(@output as varchar) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      • 1970-01-01
      • 2017-01-18
      • 1970-01-01
      • 2021-03-24
      • 1970-01-01
      相关资源
      最近更新 更多