【问题标题】:Sybase stored procedure exception handlingSybase 存储过程异常处理
【发布时间】:2014-07-18 22:55:00
【问题描述】:

我是 sybase 的新手。经过一番研究,我知道以下是在 sybase 存储过程中处理错误/异常的正确方法。

CREATE PROCEDURE dbo.sp_testErrorHandling (@age varchar(20))
AS
BEGIN
 DECLARE @myerr int

    BEGIN TRANSACTION mytrans

    DELETE FROM TestStoredProc where Name='Z'
    IF @@error<>0 BEGIN SELECT @myerr=@@error GOTO failed END

    DECLARE @result int
    EXECUTE @result = 5/0  /* throws an exception */
    IF @@error<>0 BEGIN SELECT @myerr=@@error GOTO failed END

    COMMIT TRANSACTION mytrans
    RETURN 0

    failed:
    ROLLBACK TRANSACTION mytrans
    return @myerr

END

我想,这个存储过程会返回对应于异常划分的错误代码为零。但实际上它正在抛出异常。请帮助我理解这种行为。 问候, 阿尼尔班 阿尼尔班

【问题讨论】:

    标签: exception stored-procedures error-handling sybase


    【解决方案1】:

    为了能够更好地捕获/处理“除以零”错误,您必须为 Sybase 服务器中的 arithignore arith_overflow 系统选项设置适当的值。 Sybase 在线手册中有一些很好的文档:

    http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc32300.1550/html/sqlug/X47118.htm

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 2020-12-19
      相关资源
      最近更新 更多