如何使用约束编辑器中查询的结果集有条件地执行SQL任务?
我的SQL脚本存储在如何使用约束编辑器中查询的结果集有条件地执行SQL任务?,sql,sql-server,visual-studio,ssis,expressionbuilder,Sql,Sql Server,Visual Studio,Ssis,Expressionbuilder,我的SQL脚本存储在@gempar=NULL和@受益人='2018-01-01'中。 需要根据这些变量的内容执行下一个执行SQL任务。如果ISNULL(@gempar)=True,则我们不运行以下任务(因为@gempar等于NULL)。另一方面,如果ISNULL(@受益人)=False,那么我们运行以下任务(因为@受益人不是NULL) 下一个图像是执行SQL任务的结果集: 我在SSIS中创建了两个变量受益人和gempar,但我不确定它们是否应该在表达式列中按以下方式写入:@[User::ge
@gempar
=NULL
和@受益人
='2018-01-01'
中。
需要根据这些变量的内容执行下一个执行SQL任务。如果ISNULL(@gempar)=True
,则我们不运行以下任务(因为@gempar
等于NULL)。另一方面,如果ISNULL(@受益人)=False
,那么我们运行以下任务(因为@受益人
不是NULL)
下一个图像是执行SQL任务的结果集:
我在SSIS中创建了两个变量受益人和gempar,但我不确定它们是否应该在表达式列中按以下方式写入:
@[User::gempar]
和@[User::受益人]
,或者它们现在位于下一个图像中:
这是SSIS控制流:
优先级约束编辑器的输出应为True。为什么它没有捕捉到@受益人
中的值
我希望TRUNCATE GEMPAR TABLES任务停止,TRUNCATE BENE TABLES任务继续。SSIS不允许SSIS变量为空。它有点旧,在一个稍微不同的上下文中,但这进一步详细说明了SSIS变量的null。由于您使用的变量是字符串数据类型,因此有一个选项将该变量与空白字符串进行比较。请记住,这不能保证执行SQL任务时这些变量为空。您可能需要将
SELECT
语句中的空白字符串或其他值替换为该值。例如,合并(@受益人,)
在任务之间的优先约束上单击鼠标右键,然后选择“编辑”。然后将求值操作更改为表达式,并添加一个表达式,如下所示。根据您的预期结果,可能需要将评估操作更改为“表达式和约束”(Expression and Constraint),并在“值”字段中设置上一个任务的状态。下面的示例在@[User::recipient]
变量为null时返回true,这将允许按照您的描述执行以下任务。您可以将其反转,即使用=
,用于@[User::gempar]
变量
@[User::beneficiary]) == ""
你的问题是什么?我不知道你想问什么。如果
gempar
为真,而受益人
为假,该怎么办?我想根据两个变量(@gempar和@受益人)中的值有条件地执行TRUNCATE gempar TABLES或/和TRUNCATE BENE TABLES。只在变量不为NULL时才需要执行流。“我不确定它们是否应该在表达式列中按如下方式写入:@[User::gempar]和@[User::受益人],或者它们现在在下一张图片上的样子:“为什么不尝试两种方法,看看哪种方法有效?我做到了,但两种方法都给了我相同的结果。这就是两条管道都在运行的原因。我只需要正确的一个来执行,因为@受益人不为null。您的表达式语法错误。它应该是:LEN(@[User::受益人])>1
。