【问题标题】:How do I convert number to string and pass it as argument to Execute Process Task?如何将数字转换为字符串并将其作为参数传递给执行流程任务?
【发布时间】:2012-11-01 12:23:26
【问题描述】:

我在 SSIS 2008 R2 中使用 执行过程 任务。我有一个变量idVar,它的数据类型为Int32。我需要将此变量传递给任务的属性Arguments,以便进程可执行文件可以将此变量作为参数。我使用表达式将@idVar 分配给Arguments

现在系统说我需要将 Int 转换为 String,所以我在表达式生成器中使用了以下表达式

(DT_STR, 10, 1252) @[User::IdVar] 

它给出以下错误:

Expression cannot be evaluated.

Additional information:
The expression "(DT_STR, 10, 1252) @[User:IdVar]" has a result type of "DT_STR", 
which cannot be converted to a supported type.

(Microsoft.DataTransformationServices.Controls)

将数字转换为字符串的正确方法是什么?

【问题讨论】:

    标签: ssis


    【解决方案1】:

    问题原因:

    控制流选项卡上执行流程任务中的

    Arguments属性期望数据类型为DT_WSTR而不是DT_STR.

    说明问题和修复的 SSIS 2008 R2 包:

    Business Intelligence Development Studio (BIDS) 2008 R2 中创建一个 SSIS 包,并将其命名为 SO_13177007.dtsx。使用以下信息创建一个包变量。

    Name   Scope        Data Type  Value
    ------ ------------ ---------- -----
    IdVar  SO_13177007  Int32      123
    

    执行流程任务拖放到控制流选项卡上,并将其命名为传递参数

    双击执行进程任务打开Execute Process Task Editor。单击 Expressions 页面,然后单击 Expressions 属性上的 Ellipsis 按钮以查看 Property Expression Editor。 p>

    属性表达式编辑器上,选择属性Arguments并单击属性对应的省略号按钮以打开 Expression Builder.

    表达式生成器上,输入以下表达式并单击Evaluate Expression。此表达式尝试将变量 IdVar 中的整数值转换为字符串数据类型。

    (DT_STR, 10, 1252) @[User::IdVar]
    

    单击 评估表达式 将显示以下错误消息,因为 执行流程任务 上的参数属性需要一个数据类型为 DT_WSTR 的值.

    要解决此问题,请更新如下所示的表达式以将整数值转换为数据类型DT_WSTR。点击Evaluate Expression将在Evaluated value文本区域中显示值。

    (DT_WSTR, 10) @[User::IdVar]
    

    参考资料:

    要了解 SSIS 中数据类型 DT_STRDT_WSTR 之间的区别,请阅读 MSDN 上的文档 Integration Services Data Types。以下是文档中关于这两种字符串数据类型的引用。

    DT_STR

    一个以 null 结尾的 ANSI/MBCS 字符串,最大长度为 8000 个字符。 (如果列值包含额外的空终止符,则字符串将在第一个空出现时被截断。)

    DT_WSTR

    一个以 null 结尾的 Unicode 字符串,最大长度为 4000 个字符。 (如果列值包含额外的空终止符,则字符串将在第一个空出现时被截断。)

    【讨论】:

      【解决方案2】:

      表达式:“总计数:” + (DT_WSTR, 11)@[User::int32Value]

      对于 Int32 --(-2,147,483,648 到 2,147,483,647)

      【讨论】:

        【解决方案3】:

        表达式: "总数:" + (DT_WSTR, 5)@[User::Cnt]

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-07-07
          • 2020-05-30
          • 1970-01-01
          • 2020-08-31
          • 1970-01-01
          • 1970-01-01
          • 2019-03-20
          • 1970-01-01
          相关资源
          最近更新 更多