partir de SQL Server (no estoy seguro acerca de otros RDBMS), puede llamar a varios procedimientos almacenados dentro de una transacción.
BEGIN TRAN
EXEC StoredProc1
EXEC StoredProc2
COMMIT TRAN
Es posible que desee añadir un código de retorno al procedimiento almacenado para comprobar si se debe ejecutar almacenado proc 2 si está almacenado proc 1 no
EDIT: Para comprobar un código de retorno que puede hacer algo como el seguimiento. Esto ejecutará el primer proceso almacenado. Si devuelve 0, ejecuta el 2do. Si el 2º devuelve 0, comete la transacción. Si bien devuelve un valor no 0 entonces será deshacer la transacción
DECLARE @ReturnValue INT
BEGIN TRAN
EXEC @ReturnValue = StoredProc1
IF @ReturnValue = 0
BEGIN
EXEC @ReturnValue = StoredProc2
IF @ReturnValue = 0
BEGIN
COMMIT
END
ELSE
BEGIN
ROLLBACK
END
END
ELSE
BEGIN
ROLLBACK
END
intente capturar que Gregs responde solo de una manera más fácil. ? él verifica cada valor de retorno y luego se detiene. si un dident devuelve 0. ¡gracias por la respuesta !. – saadan
ahora lo tengo para trabajar con la captura de prueba pero si lo hago fallar puedo enviar un número de filas efectuadas o algo así para ver cuándo falla. – saadan
Puedes enviar lo que necesites de la captura, ligeramente diferente de la respuesta de Gregs, digamos que necesitas agregar un tercer proceso, la respuesta if ... else se volvería rápidamente bastante compleja. Además, si falla, no se verán afectadas las filas, ¿lo está recuperando? – Paddy