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

时间:2012-11-01 12:23:27

标签: ssis

我在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)

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

Error

3 个答案:

答案 0 :(得分:33)

问题原因:

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

Arguments 属性需要数据类型{{1而不是DT_WSTR

SSIS 2008 R2包解释了问题并修复:

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

SO_13177007.dtsx

Variables pane

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

Control Flow tab

双击执行流程任务以打开 Name Scope Data Type Value ------ ------------ ---------- ----- IdVar SO_13177007 Int32 123 。单击表达式页面,然后针对表达式属性单击省略号按钮以查看 Execute Process Task Editor

Execute Process Task Editor

属性表达式编辑器上,选择属性 Property Expression Editor ,然后针对该属性单击省略号按钮以打开< EM> Arguments

Property Expression Editor

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

IdVar

Expression Builder - DT_STR

单击评估表达式将显示以下错误消息,因为执行流程任务上的Arguments属性需要数据类型 (DT_STR, 10, 1252) @[User::IdVar] 的值

Integer to ANSI string conversion error

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

DT_WSTR

Expression Builder - DT_WSTR

参考文献:

要了解SSIS中数据类型 (DT_WSTR, 10) @[User::IdVar] DT_STR 之间的差异,请阅读MSDN上的文档Integration Services Data Types。以下是有关这两种字符串数据类型的文档中的引用。

DT_STR

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

DT_WSTR

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

答案 1 :(得分:1)

表达:&#34;总计数:&#34; +(DT_WSTR,11)@ [User :: int32Value]

表示Int32 - (-2,147,483,648至2,147,483,647)

答案 2 :(得分:0)

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