Que tal Bananas.
Para agrupar un serie de sentencias SQL y hacer todas o ningúna las "encerramos" en una transacción, por ejemplo:
Código:
BEGIN TRAN
INSERT....
INSERT....
DELETE...
COMMIT TRAN
Una vez que abres un
BEGGIN TRAN las setencias serán "ejecutadas" hasta que se encuentre con un
COMMIT TRAN.
Ahora bien, si quieres regresar un valor de si se ejecutaron o no las sentencias, podemos hacer los siguiente:
Código:
BEGIN TRAN
INSERT....
IF @@ERROR = 0 --No hubo error
BEGIN
INSERT....
IF @@ERROR <> 0 -- No hubo Error
BEGIN
DELETE ...
IF @@ERROR <> 0 -- No hubo Error
BEGIN
COMMIT TRANS-- Aceptamos las 3 sentencias y cerramos la transacción.
@Error = -1
END
ELSE
BEGIN
ROLLBACK TRAN
@Error = 0
END
END
ELSE
BEGIN
ROLLBACK TRAN
@Error = 0
END
END
ELSE
BEGIN
ROLLBACK TRAN
@Error = 0
END
Lo anterior esta un poco enrredado, pero de momento no se me ocurre otra, de cualquier forma es solo una idea.
@@ERROR.- Es una variable de SQL Server que te indica si en la última sentencia hubo un error, sino hubo error tiene un valor de cero.
Este es un tema muy amplio, de todos modos dos las palabras claves a buscar son: @@ERROR, BEGIN , COMMIT, ROLLBACK.
Saludos y suerte!