我有一个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 ... - >不知道那种语法是否正确。
谢谢。
答案 0 :(得分:1)
您无法按照尝试的方式设置SSIS变量,因为您正在运行SQL查询来设置它。您将需要使用执行SQL任务。以下是步骤。
创建一个变量@ [User :: SQLStatement]并在表达式中粘贴此 - “SELECT [CUR_PRD_DATE] FROM [Log_DP_Ctrl]。[Ma]。[Log_CUR_PRD] WHERE [L_Instance] ='“+(DT_WSTR,50)@ [User :: strLgtyInst] +”'“
在执行SQL任务中,选择SQL源类型为“变量”,并将Source变量设置为User :: SQLStatement。将ResultSet属性设置为Single Row。
在结果集选项卡中将CUR_PRD_DATE映射到@ [User :: strLgtyInst]
希望这会有所帮助,请告诉我你有任何其他问题。