我在SSIS 2008 R2中使用Execute Process任务.我有一个idVar数据类型为Int32的变量.我需要将此变量传递给Arguments任务的属性,以便进程可执行文件可以将此变量作为参数.我用表情来分配@idVar给Arguments.
现在系统说我需要将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
在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)

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

要解决此问题,请更新表达式,如下所示,将整数值转换为数据类型DT_WSTR.单击" 评估表达式"将在" 评估值"文本区域中显示该值.
(DT_WSTR, 10) @[User::IdVar]
Run Code Online (Sandbox Code Playgroud)

要了解数据类型DT_STR和DT_WSTRSSIS 之间的差异,请阅读MSDN上的文档Integration Services数据类型.以下是有关这两种字符串数据类型的文档中的引用.
以null结尾的ANSI/MBCS字符串,最大长度为8000个字符.(如果列值包含其他空终止符,则在第一个空值出现时将截断该字符串.)
以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 个字符。
| 归档时间: |
|
| 查看次数: |
91597 次 |
| 最近记录: |