我有一个每月一次的JOB,有3个步骤,每个步骤运行一个不同的SP,当我需要所有信息时,如何让第一个SP开始运行?
ie:我要求表A和表B信息在进入JOB的第2步和第3步之前运行SP1,我该怎么告诉程序?
答案 0 :(得分:0)
在执行语句之前添加对表A和表B的检查。像这样
IF EXISTS(SELECT 1 FROM tableA) AND EXISTS(SELECT 1 FROM TableB)
BEGIN
EXEC YourProcedure
END
如果只想在数据库中存在两个表时才运行Execute,请尝试使用
DECLARE @Cnt INT = 0
SELECT @Cnt COUNT(1) FROM sys.objects WHERE Object_Id = OBJECT_ID('tableA')OR Object_Id = OBJECT_ID('tableB')
IF ISNULL(@Cnt,0)=2
BEGIN
EXEC YourProcedure
END
或者如果要循环它直到创建表,那么试试这个
DECLARE @Cnt INT = 0
WHILE ISNULL(@Cnt,0) <2
BEGIN
SELECT @Cnt COUNT(1) FROM sys.objects WHERE Object_Id = OBJECT_ID('tableA')OR Object_Id = OBJECT_ID('tableB')
IF ISNULL(@Cnt,0)=2
BEGIN
EXEC YourProcedure
END
END
如果要在特定时间运行过程。然后,您可以在SQL作业或SSIS包中为该特定时间安排它。或者如果你想要检查SQL脚本(不推荐)那么试试这个
WHILE(1)
BEGIN
IF(SELECT 1 WHERE GETDATE() = 'dd/mm/yyy hh:ss:mm')
BEGIN
EXEC YourProcedure
END
END