donpandix
12/17/2019 - 3:09 PM

Template de un SP con captura de excepciones

Template de un SP con captura de excepciones

CREATE PROCEDURE [dbo].[spa_XXX_ACT_NOMBRE]
AS
/*
!IniHeaderDoc
*****************************************************************************
!NombreObjeto     : spa_XXX_ACT_NOMBRE
!Sistema          : Proyecto
!Modulo           : Web
!Descripcion      : Descripción
!Plataforma       : !BaseDatosSqlServer
!Perfil           : USOGENERAL
!Itinerado        : N.A
!Uso              : N.A
!Autor            : Cesar Gonzalez
!Creacion         : DD/MM/YYYY
!Retornos/Salidas : N.A
!OrigenReq        : N.A
=============================================================================
!Parametros :
=============================================================================
!Testing    : exec spa_XXX_ACT_NOMBRE
=============================================================================
!ControlCambio
--------------
!cVersion    !cFecha        !cProgramador                !cDescripcion
-----------------------------------------------------------------------------
1.0           DD/MM/YYYY    Cesar Gonzalez               Creación del objeto
*****************************************************************************
!EndHeaderDoc
*/


BEGIN TRANSACTION transaccion_sp
BEGIN
    SET NOCOUNT ON;
    BEGIN TRY
    
        -- QUERIES


        COMMIT TRANSACTION transaccion_sp
        RETURN 0
    END TRY


    BEGIN CATCH
    
        -- En caso de error capturo la información
        -- asociada para almacenar y/o desplegar
                 
        DECLARE @ErrorMessage NVARCHAR(4000);  
        DECLARE @ErrorSeverity INT;  
        DECLARE @ErrorState INT;
        DECLARE @ErrorNumber INT;      
    
        SELECT   
            @ErrorMessage    = ERROR_MESSAGE(),  
            @ErrorSeverity   = ERROR_SEVERITY(),  
            @ErrorState      = ERROR_STATE(),
            @ErrorNumber     = ERROR_NUMBER();
                     
        ROLLBACK TRANSACTION transaccion_sp
        
        RAISERROR (@ErrorMessage,
                   @ErrorSeverity,
                   @ErrorState);  
                   
        RETURN (@ErrorNumber)
    END CATCH
END