sql-server - 条件 SSIS - 根据结果执行一项或另一项任务

标签 sql-server ssis expression etl operator-precedence

我在 SSIS 中有以下任务:

enter image description here

在检查库存任务中,我执行一个返回 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”。

如果我编辑优先约束并将表达式设置为求值操作,然后从上一个任务中选择变量,无论哪种方式,它都不会进入下一个任务。我缺少什么?我尝试了在网上找到的内容,但没有任何帮助。谢谢!

enter image description here

最佳答案

解决方案

您必须设置以下值:

拒绝订单

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]

屏幕截图

enter image description here

建议

我认为最好在您的过程中添加一个 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/

相关文章:

Azure SSIS 包 - 执行 SQL 任务

Swift 3 : Converting numeric string to Bool, 因无效值而变得错误

python - 如何在 pdb 中调试手动键入的表达式和语句?

SQL Server - 查看所有外键依赖关系

database - SSIS 连接管理器登录失败

ssis - 由 SQL Server 代理运行时 Analysis Services 处理任务失败

在 Switch 语句中转换 IF 语句

php - CakePHP - 为什么 Model::save Cause() 是 INSERT 而不是 UPDATE?

sql - 如何将临时表作为参数传递到单独的存储过程中

sql - 授予创建表的权限 - SQL Server