T-SQL不是异步的,所以你别无选择,只能等到SP2结束.幸运的是,这就是你想要的.
CREATE PROCEDURE SP1 AS EXEC SP2 PRINT 'Done'
以下是我们的一个存储过程的示例,该存储过程在其中执行多个存储过程:
ALTER PROCEDURE [dbo].[AssetLibrary_AssetDelete] ( @AssetID AS uniqueidentifier ) AS SET NOCOUNT ON SET TRANSACTION ISOLATION LEVEL READ COMMITTED EXEC AssetLibrary_AssetDeleteAttributes @AssetID EXEC AssetLibrary_AssetDeleteComponents @AssetID EXEC AssetLibrary_AssetDeleteAgreements @AssetID EXEC AssetLibrary_AssetDeleteMaintenance @AssetID DELETE FROM AssetLibrary_Asset WHERE AssetLibrary_Asset.AssetID = @AssetID RETURN (@@ERROR)
我们根据需要使用的内联存储过程.像不同的示例相同的参数,我们必须在查询中使用不同的值.
Create Proc SP1 ( @ID int, @Name varchar(40) -- etc parameter list, If you don't have any parameter then no need to pass. ) AS BEGIN -- Here we have some opereations -- If there is any Error Before Executing SP2 then SP will stop executing. Exec SP2 @ID,@Name,@SomeID OUTPUT -- ,etc some other parameter also we can use OutPut parameters like -- @SomeID is useful for some other operations for condition checking insertion etc. -- If you have any Error in you SP2 then also it will stop executing. -- If you want to do any other operation after executing SP2 that we can do here. END