miércoles, 12 de diciembre de 2007

SQLServer. Transacciones en procedimientos almacenados

Ejemplillo de cómo implementar un procedimiento almacenado con operaciones dentro de una transacción y controlar la excepción para tirar un rollback:

CREATE PROCEDURE nombreProcedimiento
    @parametro1 bla, bla...
AS
BEGIN
  BEGIN TRY
    BEGIN TRANSACTION
    INSERT ...
    UPDATE ...
    (etc...)
    COMMIT
  END TRY
  BEGIN CATCH
    IF @@TRANCOUNT > 0
      ROLLBACK
      DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int
      SELECT @ErrMsg = ERROR_MESSAGE(),
      @ErrSeverity = ERROR_SEVERITY()
      RAISERROR(@ErrMsg, @ErrSeverity, 1)
    END CATCH
END

No hay comentarios: