之前听说存储过程B中调用存储过程A,存储过程B不管A是否执行完就开始继续执行。今天自己写了个例子,发现并不是这样的。
CREATE PROCEDURE [dbo].[TestA] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here WAITFOR DELAY '00:01:00' --延时1分钟 PRINT 'TestA'; END
存储过程B,调用存储过程A,如下:
CREATE PROCEDURE [dbo].[TestB] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @StartTime dateTime SET @StartTime=GETDATE(); EXEC TestA; PRINT DATEDIFF(s,@StartTime,GETDATE()); -- Insert statements for procedure here WAITFOR DELAY '00:0:10' --延时10S PRINT 'TestB'; PRINT DATEDIFF(s,@StartTime,GETDATE()); END
执行存储过程B,结果如下: