ver procedimientos procedimiento permisos pasar parametros para otro los job ejemplo ejecutar desde dentro como almacenados almacenado sql sql-server tsql stored-procedures sql-server-2005

procedimientos - procedimiento almacenado sql server ejemplo



Ejecutar un procedimiento almacenado dentro de un procedimiento almacenado (6)

Me gustaría ejecutar un procedimiento almacenado dentro de un procedimiento almacenado, por ejemplo

EXEC SP1 BEGIN EXEC SP2 END

Pero solo quiero que el SP1 termine después de que el SP2 haya terminado de ejecutarse, así que necesito encontrar una manera para que el SP1 espere a que el SP2 termine antes de que termine el SP1 .

SP2 se está ejecutando como parte de SP1 así que tengo algo como:

CREATE PROCEDURE SP1 AS BEGIN EXECUTE SP2 END


Aquí hay un ejemplo de uno de nuestros procedimientos almacenados que ejecuta múltiples procedimientos almacenados dentro de él:

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)


Así es como funciona, los procedimientos almacenados se ejecutan en orden, no es necesario comenzar algo así como

exec dbo.sp1 exec dbo.sp2


Es probable que su SP2 no se esté ejecutando debido a algún error en el código inicial en SP1, por lo que EXEC SP2 no se alcanza.

Por favor, publique todo su código.


Hola, he encontrado que mi problema es que SP2 no se ejecuta desde SP1 cuando se ejecuta SP1.

A continuación se muestra la estructura de SP1:

ALTER PROCEDURE SP1 AS BEGIN Declare c1 cursor.... open c1 fetch next from c1 ... while @@fetch_status = 0 Begin ... Fetch Next from c1 end close c1 deallocate c1 exec sp2 end


Procedimiento almacenado en línea que usamos según nuestra necesidad. Ejemplo similar Diferente parámetro con diferentes valores que debemos usar en las consultas.

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


T-SQL no es asíncrono, por lo que realmente no tiene más remedio que esperar hasta que finalice el SP2. Afortunadamente, eso es lo que quieres.

CREATE PROCEDURE SP1 AS EXEC SP2 PRINT ''Done''