从SSIS中的另一个变量为变量赋值(属性 - >表达式)

时间:2014-06-12 18:25:31

标签: sql variables ssis expression assign

我有一个SSIS任务,它将一个变量(@ [User :: strLgtyInst])的值赋给另一个变量(@ [User :: LgtyPer])。这就是我所拥有的:

SET '" +  @[User::LgtyPer] +"' =  (SELECT [CUR_PRD_DATE] 
FROM [Log_DP_Ctrl].[Ma].[Log_CUR_PRD] 
WHERE [L_Instance] =  '" +  @[User::strLgtyInst] +"'')

当我评估表达式时,它给了我这个错误:

无法评估表达。

数据类型“DT_WSTR”和“DT_DATE”与二进制运算符“+”不兼容。操作数类型无法隐式转换为操作的兼容类型。要执行此操作,需要使用强制转换运算符显式转换一个或两个操作数。

尝试设置二进制操作的结果类型“”SET'“+ @ [User :: LgtyPeriod]”失败,错误代码为0xC0047080。

所以... 错误1:必须转换正在读取的变量。 - >请帮助解决语法问题。 错误2:SET ... - >不知道那种语法是否正确。

谢谢。

1 个答案:

答案 0 :(得分:1)

您无法按照尝试的方式设置SSIS变量,因为您正在运行SQL查询来设置它。您将需要使用执行SQL任务。以下是步骤。

  1. 创建一个变量@ [User :: SQLStatement]并在表达式中粘贴此 - “SELECT [CUR_PRD_DATE] FROM [Log_DP_Ctrl]。[Ma]。[Log_CUR_PRD] WHERE [L_Instance] ='“+(DT_WSTR,50)@ [User :: strLgtyInst] +”'“

  2. 在执行SQL任务中,选择SQL源类型为“变量”,并将Source变量设置为User :: SQLStatement。将ResultSet属性设置为Single Row。

  3. 在结果集选项卡中将CUR_PRD_DATE映射到@ [User :: strLgtyInst]

  4. 希望这会有所帮助,请告诉我你有任何其他问题。