我在 SSIS 中有以下任务:
在检查库存任务中,我执行一个返回 0 或 1 的存储过程:
CREATE PROCEDURE [dbo].[SP_CheckStockAvailability]
AS
BEGIN
DECLARE @ItemGID nvarchar(250)=(SELECT TOP (1) ItemGID FROM XMLOrderlines WHERE Comparison='0')
SELECT CASE
WHEN @ItemGID IS NOT NULL
THEN CAST (0 AS bit)
ELSE CAST (1 AS bit)
END AS Comparison
FROM XMLOrderlines
END
GO
如果结果为 1,我想执行拒绝订单(右侧)任务,如果不是,则执行左侧的任务。我设置以变量 Boolean
数据类型导出过程结果,默认值为“False”。
如果我编辑优先约束并将表达式
设置为求值操作,然后从上一个任务中选择变量,无论哪种方式,它都不会进入下一个任务。我缺少什么?我尝试了在网上找到的内容,但没有任何帮助。谢谢!
最佳答案
解决方案
您必须设置以下值:
拒绝订单
Evaluation operation: Expression and Constraint
Value: Success
Expression: @[User::Result] = 1
OR
@[User::Result]
接受订单
Evaluation operation: Expression and Constraint
Value: Success
Expression: @[User::Result] = 0
OR
!@[User::Result]
屏幕截图
建议
我认为最好在您的过程中添加一个 TRY...CATCH
block ,因此如果遇到错误,结果将为 1
并且顺序为拒绝:
CREATE PROCEDURE [dbo].[SP_CheckStockAvailability]
AS
BEGIN
BEGIN TRY
DECLARE @ItemGID nvarchar(250)=(SELECT TOP (1) ItemGID FROM XMLOrderlines WHERE Comparison='0')
SELECT CASE
WHEN @ItemGID IS NOT NULL
THEN CAST (0 AS bit)
ELSE CAST (1 AS bit)
END AS Comparison
FROM XMLOrderlines
END TRY
BEGIN CATCH
SELECT 1 AS Comparison
END CATCH
END
GO
关于sql-server - 条件 SSIS - 根据结果执行一项或另一项任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48264984/