2016-02-29 39 views
1

指定返回错误的论点,我有我的存储过程:我应该如何在存储过程中

CREATE PROCEDURE [dbo].[get_tests] 
    @ErrorLine INT OUTPUT, 
    @ErrorMessage NVARCHAR(1000) OUTPUT, 
    @ErrorProcedure NVARCHAR(100) OUTPUT, 
    @ErrorNumber INT OUTPUT 
AS 
    SET NOCOUNT ON 

    // 
    BEGIN CATCH 
     SET @ErrorLine = ERROR_LINE() 
     SET @ErrorMessage = ERROR_MESSAGE() 
     SET @ErrorProcedure = ERROR_PROCEDURE() 
     SET @ErrorNumber = ERROR_NUMBER() 
     RETURN 
    END CATCH 

有人能告诉我这是声明错误信息的好方法?任何额外的意见或建议将不胜感激

回答

1

你的方式来处理错误是很好的继续。您还可以看看MSDN: Using TRY...CATCH in Transact-SQL

  • 如果存储过程不包含自己的TRY ... CATCH构造,错误恢复控制与TRY块相关 CATCH块包含EXECUTE语句。
  • 如果存储过程包含TRY ... CATCH构造,则错误会将控制转移到存储过程中的CATCH块。当CATCH块代码完成时,控制权立即传回到语句EXECUTE语句后调用
    存储过程。

另一种方法是使用select语句进行CATCH块来选择喜欢的错误:

BEGIN CATCH 
SELECT 
     ERROR_NUMBER() AS ErrorNumber, 
     ERROR_SEVERITY() AS ErrorSeverity, 
     ERROR_STATE() as ErrorState, 
     ERROR_PROCEDURE() as ErrorProcedure, 
     ERROR_LINE() as ErrorLine, 
     ERROR_MESSAGE() as ErrorMessage; 
END CATCH 
相关问题