views:

84

answers:

1

I have this bit of code I found on the web at the end of each of my stored procedures:

ROLLBACK TRANSACTION

      PRINT '-----START: ERROR DETAILS-----'
      PRINT ERROR_NUMBER()
      PRINT ERROR_SEVERITY()
      PRINT ERROR_STATE()
      PRINT ERROR_PROCEDURE()
      PRINT ERROR_LINE()
      PRINT ERROR_MESSAGE()
      PRINT '-----END: ERROR DETAILS-----'

      DECLARE @prmErrmsg NVARCHAR(4000);
      DECLARE @prmErrSvr INT;

      SELECT @prmErrmsg = ERROR_MESSAGE()
       ,@prmErrSvr = ERROR_SEVERITY();

      INSERT INTO dbo.myErrors
         ([ErrorMessage]
         ,[ErrorSeverity]
         ,[DateCreated])
        VALUES
         (@prmErrmsg
         ,@prmErrSvr
         ,GetutcDate())


      RAISERROR(@prmErrmsg,@prmErrSvr,1)

It's writing entries to the myErrors table, but it's not writing an error message or an error severity.

My first question is why?

I believe it's got something to with the error severity being within a certain range.

How can I tell it to log verbose error messages ALWAYS, regardless of severity?

+2  A: 

According to MSDN, ERROR_MESSAGE() etc are only set within the CATCH block of a TRY ... CATCH statement.

devio