在ssis中,我试图像这样添加评论/ *和另一边用* /添加另一个评论。
我在执行SQL任务中的SQL如下:
SELECT DType, COUNT(*) FROM (
SELECT DType From (Select Distinct DPoint, RNum From
ECount Where DType = 'STR' and Month(EDate) = '07') as rows
UNION ALL
SELECT DType From (Select Distinct DPoint, RNum From
ECount Where DType = 'NCD' and Month(EDate) = '07') as rows
)
GROUP BY DType
ORDER BY DType
参数是一个字符串,每个参数分别有/ *和* /。我已将其映射为ssis映射为0和1,并使用ssis中指定的参数和数据类型为nvarchar。但是我有一个错误如下:错误:数据类型" DT_WSTR"和" DT_I4"与二元运算符不兼容。
但是参数是一个字符串,ssis中的映射设置为nvarchar。这可以完成吗或SSIS只能理解Select,WHERE子句等中的实际参数吗?
答案 0 :(得分:0)
我真的不认为您可以使用SSIS参数动态注释掉代码或进行查询"动态"以任何其他方式。我认为他们只能做TSQL中的变量才能做...表示值。
如果是这种情况,那么这是一个简单的解决方法。如果您想要在AND
之后注释掉这些内容,则只有一个参数为1;如果您不想将其注释掉,则为0,并执行以下操作:
...
WHERE CUSTOMER_ADDRESS.AddressNumber = 1
AND CUSTOMER_ADDRESS.ObjectTypeCode = 'ContactBase'
AND (
1=? OR
(
CONTACT.CreatedOn BETWEEN DATEADD(dd, DATEDIFF(dd,66,getdate()), 0) AND DATEADD(dd, DATEDIFF(dd,0,getdate()), 1)
or
CONTACT.ModifiedOn BETWEEN DATEADD(dd, DATEDIFF(dd,66,getdate()), 0) AND DATEADD(dd, DATEDIFF(dd,0,getdate()), 1)
)
)
答案 1 :(得分:0)
您可以使用在运行时评估的变量来使用动态SQL。方法如下:
使用属性EvaluateAsExpression=true
创建一个字符串变量 SQLCommand ,并将其表达式设置为
"<Your SQL Start> ... AND CUSTOMER_ADDRESS.ObjectTypeCode = 'ContactBase' " +
@[User::AdditionalCondition] + " <your SQL continued>"
创建一个字符串变量 AdditionalCondition ,并根据您的流量条件将其设置为NULL或值" AND <your condition> "
后面的工作如下 - 包将根据您编程的逻辑在运行时设置 AdditionalCondition 变量。在Execute SQL Command中,包将评估 SQLCommand 变量,注入变量表达式中定义的 AdditionalCondition 。