天天看點

存儲過程調用存儲過程

   之前聽說存儲過程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,結果如下: