当case语句返回true时启动SQL Server代理作业

时间:2017-03-23 09:47:14

标签: sql ssis sql-agent-job sql-agent

我想创建一个不断检查和比较源表和目标表之间行数的过程。如果源表的行数较多,那么我想执行一个SQL Server代理作业,我的程序应该等到该作业完成。

例如:

create proc 'XYZ'
    case when a.count(*) > b.count(*) then sp_start_job 'SSIS_package_ABC' 

    wait for 'package execution completion'

如果有人能指出我正确的方向,我会非常感激,因为我是SQL Server Agent的新手。

1 个答案:

答案 0 :(得分:2)

使用IF语句代替CASE

DECLARE @SRC_TABLE_CNT INT,
    @DEST_TABLE_CNT INT

SELECT @SRC_TABLE_CNT = COUNT(*) FROM SOURCE_TABLE

SELECT @DEST_TABLE_CNT = COUNT(*) FROM DEST_TABLE

IF @SRC_TABLE_CNT > @DEST_TABLE_CNT
BEGIN
    sp_start_job 'SSIS_package_ABC'
END