我如何在SSIS

时间:2017-02-24 16:49:32

标签: sql sql-server oracle ssis

在表达式构建器中,我的查询看起来像这样。

SELECT *
FROM TABLE_A
WHERE COLOMN_A_ID IN 
                (SELECT COLOMN_A_ID 
                 FROM TABLE_B 
                JOIN EXTRACT_STATUS  ON   EXTRACT_DTTM >  TO_DATE('" + (DT_WSTR, 30) @[User::LastTransferDT] + "', 'mm/dd/yyyy hh:mi:ss AM') AND TABLE_B.Scheduled_DT BETWEEN EXTRACT_STATUS.RANGE_BEGIN_DTTM AND EXTRACT_STATUS.RANGE_END_DTTM AND F_MPOG_EXTRACT.extract_num ="+@[User::RowNumber]+ ")"`

我一次又一次地遇到同样的错误。 请帮忙。

TITLE:Expression Builder

无法评估表达。

  

如需帮助,请点击:   http://go.microsoft.com/fwlink?ProdName=Microsoft%C2%AE%20Visual%20Studio%C2%AE%202010&ProdVer=10.0.40219.1&EvtSrc=Microsoft.DataTransformationServices.Controls.TaskUIFramework.TaskUIFrameworkSR&EvtID=FailToEvaluateExpression&LinkId=20476

其他信息:

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

尝试设置二进制操作的结果类型

SELECT *
FROM TABLE_A
WHERE COLOMN_A_ID IN (SELECT COLOMN_A_ID
                     FROM TABLE_B
                          JOIN EXTRACT_STATUS
                             ON     EXTRACT_DTTM >
                                      TO_DATE('" + (DT_WSTR,30)@[User::LastTransferDT] + "', 'mm/dd/yyyy hh:mi:ss AM')
                                AND TABLE_B.Scheduled_DT BETWEEN EXTRACT_STATUS.RANGE_BEGIN_DTTM
                                                             AND EXTRACT_STATUS.RANGE_END_DTTM
                                AND F_MPOG_EXTRACT.extract_num =" + @[User::RowNumber]" failed with error code 0xC0047080.

(Microsoft.DataTransformationServices.Controls)

按钮:

确定

1 个答案:

答案 0 :(得分:3)

您可能需要明确地将RowNumber参数转换为字符串类型,就像您在代码中为LastTransferDt做更高一样。

... EXTRACT.extract_num =" + (DT_WSTR,30)@[User::RowNumber]