SQL错误表&存储过程

时间:2008-11-28 16:53:58

标签: sql tsql 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)

它正在将条目写入myErrors表,但它没有写错误消息或错误严重性。

我的第一个问题是为什么?

我相信错误严重程度在一定范围内会有所帮助。

如何记录详细的错误消息,无论严重程度如何?

1 个答案:

答案 0 :(得分:2)

根据MSDN,ERROR_MESSAGE()等仅在TRY ... CATCH语句的CATCH块中设置。