web-dev-qa-db-fra.com

Exécution d'une procédure stockée au sein d'une procédure stockée

Je souhaite exécuter une procédure stockée au sein d'une procédure stockée, par exemple.

EXEC SP1

BEGIN

EXEC SP2
END

Mais je veux seulement SP1 pour terminer après SP2 a fini de fonctionner, je dois donc trouver un moyen de SP1 attendre pour SP2 terminer avant SP1 prend fin.

SP2 est exécuté dans le cadre de SP1 donc j'ai quelque chose comme:

CREATE PROCEDURE SP1
AS
BEGIN

EXECUTE SP2

END
42
test

T-SQL n'est pas asynchrone, vous n'avez donc pas d'autre choix que d'attendre la fin du SP2. Heureusement, c'est ce que vous voulez.

CREATE PROCEDURE SP1 AS
   EXEC SP2
   PRINT 'Done'
34
Mark Brackett

Voici un exemple de l'une de nos procédures stockées qui exécute plusieurs procédures stockées:

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)
15
mattruma

Procédure stockée en ligne que nous utilisons selon nos besoins. Exemple comme différent Même paramètre avec des valeurs différentes que nous devons utiliser dans les requêtes.

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
11
Jom George

C’est comme cela que les procédures stockées fonctionnent dans l’ordre, vous n’avez pas besoin de commencer comme ça.

exec dbo.sp1
exec dbo.sp2
3
PeteT