Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/12/2006, 10:02
daniel00
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 18 años, 3 meses
Puntos: 8
Re: stored procedures

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!