完成另一个SPROC后执行SPROC

时间:2010-06-07 12:30:41

标签: sql-server tsql sql-server-2008

基本上,我想在T-SQL中执行此操作

1)执行SPROC1
2)完成SPROC1后,执行SPROC2
3)完成SPROC2后,执行SPROC3

我知道这可以使用SSIS。如果有任何办法可以做到这一点吗?

由于

2 个答案:

答案 0 :(得分:2)

试试这个:

Execute SPROC1
execute SPROC2
execute SPROC3

SPROC2在SPROC1完成之前不会运行,然后在SPROC2完成之前SPROC3不会运行。

你可以测试一下:

CREATE PROCEDURE pTest1 AS
SELECT 1,GETDATE()
WAITFOR DELAY '00:00:02'
RETURN 0
go
CREATE PROCEDURE pTest2 AS
SELECT 2,GETDATE()
WAITFOR DELAY '00:00:02'
RETURN 0
go
CREATE PROCEDURE pTest3 AS
SELECT 3,GETDATE()
WAITFOR DELAY '00:00:02'
RETURN 0
go

EXEC pTest1
EXEC pTest2
EXEC pTest3

输出:

----------- -----------------------
1           2010-06-07 08:43:08.423

(1 row(s) affected)


----------- -----------------------
2           2010-06-07 08:43:10.423

(1 row(s) affected)


----------- -----------------------
3           2010-06-07 08:43:12.423

(1 row(s) affected)

答案 1 :(得分:1)

对于一次数据库调用,请使用包装器

CREATE PROC SPROCwrapper
AS
EXEC SPROC1
EXEC SPROC2
EXEC SPROC3
GO

...或根据KM的答案发送3行。

SQL按顺序执行