CREATE PROCEDURE  [dbo].[SP_TEMP_INSERT_ERROR_LOG](

    @pi_name varchar(50)=''

    ,@pi_age int

 

AS

 

BEGIN 

  --  DECLARE @crud_count    BIGINT ;

    

    DECLARE @sp_name    NVARCHAR(100)  -- 프로시저 이름

            ,@sp_start_date    VARCHAR(25-- 프로시저 실행날짜

            ,@sp_end_date    VARCHAR(25-- 프로시저 종료 날짜

            ,@error_line    VARCHAR(50-- 에러라인

            ,@error_msg    NVARCHAR(MAX-- 에러메세지

            ,@error_number    VARCHAR(50-- 에러행

            ,@error_severity    VARCHAR(50-- 에러심각도

            

      SET NOCOUNT ON

      -- SET XACT_ABORT ON

      

      SET @sp_name = 'SP_TEMP_INSERT_ERROR_LOG';

/**

    IF XACT_STATE() = -1

        BEGIN

            GOTO ERRORHANDLER;

        END

        **/

    

 

    BEGIN TRY  

        print 'TRY 실행';

        SET @sp_start_date = CONVERT(VARCHAR(25), GETDATE(), 121);

 

        BEGIN TRAN

            

            INSERT INTO T_TEMP (TEMP_NAME, TEMP_AGE) VALUES(@pi_name, @pi_age);

            INSERT INTO T_TEMP (TEMP_NAME, TEMP_AGE) VALUES(@pi_name, '에러발생시키기'); -- 에러발생 

            INSERT INTO T_TEMP (TEMP_NAME, TEMP_AGE) VALUES(@pi_name, @pi_age+2); 

        

        COMMIT TRAN;

        PRINT '커밋 성공'

 

    END TRY 

    BEGIN CATCH

        PRINT 'CATCH 실행';

        

        SELECT @error_line=ERROR_LINE(), @error_number=ERROR_NUMBER(), @error_msg=ERROR_MESSAGE(), @error_severity=ERROR_SEVERITY()

        

        SET @sp_end_date=CONVERT(varchar(25), GETDATE(), 121);

 

        PRINT '에러발생 SP명 ===> ' + @sp_name

        PRINT '에러라인 ===> ' + @error_line

        PRINT '에러발생시간 ===> ' + @sp_end_date 

        PRINT '에러번호 ===> ' + @error_number

        PRINT '에러 메세지 ===> ' + @error_msg 

        PRINT '에러 심각도 ===> '+ @error_severity

 

        ROLLBACK TRAN

    END CATCH

 

END 

 -- ERRORHANDLER:

--    print 'ERRORHANDLER 실행'

--    IF XACT_STATE() <> 0

--        PRINT '롤백성공';

--        ROLLBACK TRAN ;

+ Recent posts