2008-11-28 70 views
0

我有此位的代码,我发现在网络上,在我的每一个存储过程的末尾:表SQL错误和存储过程

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表,但它不是写错误消息或错误严重程度。

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

我认为它有一些错误严重程度在一定范围内。

如何告诉它记录详细的错误消息始终,无论严重程度如何?

回答

2

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