如何将数字转换为字符串并将其作为参数传递给执行流程任务?

She*_*een 14 ssis

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

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

(DT_STR, 10, 1252) @[User::IdVar] 
Run Code Online (Sandbox Code Playgroud)

它给出以下错误:

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)
Run Code Online (Sandbox Code Playgroud)

键入数字到字符串的正确方法是什么?

错误

小智 36

问题原因:

Arguments" 控制流"选项卡上提供的" 执行进程任务"中的属性是否需要数据类型的值,而不是.DT_WSTRDT_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
Run Code Online (Sandbox Code Playgroud)

变量窗格

Execute Process Task拖放到Control Flow选项卡上,并将其命名为Pass参数

控制流选项卡

双击" 执行进程任务"以打开Execute Process Task Editor.单击" 表达式"页面,然后单击" 表达式"属性的" 省略号"按钮以查看.Property Expression Editor

执行流程任务编辑器

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

属性表达编辑器

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

(DT_STR, 10, 1252) @[User::IdVar]
Run Code Online (Sandbox Code Playgroud)

表达式生成器 -  DT_STR

单击Evaluate Expression将显示以下错误消息,因为Execute Process Task上的Arguments属性需要数据类型的值DT_WSTR.

整数到ANSI字符串转换错误

要解决此问题,请更新表达式,如下所示,将整数值转换为数据类型DT_WSTR.单击" 评估表达式"将在" 评估值"文本区域中显示该值.

(DT_WSTR, 10) @[User::IdVar]
Run Code Online (Sandbox Code Playgroud)

表达式生成器 -  DT_WSTR

参考文献:

要了解数据类型DT_STRDT_WSTRSSIS 之间的差异,请阅读MSDN上的文档Integration Services数据类型.以下是有关这两种字符串数据类型的文档中的引用.

DT_STR

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

DT_WSTR

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


小智 6

表达:

"Total Count: " + (DT_WSTR, 11)@[User::int32Value]
Run Code Online (Sandbox Code Playgroud)

作为参考,Int 32 的范围是(-2,147,483,648 到 2,147,483,647)。包括表示否定的 - 符号,最多可组成 11 个字符。