Sybase存储过程异常处理

时间:2014-05-29 12:24:47

标签: exception stored-procedures error-handling sybase

我是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

我想,这个存储过程会将错误代码对应于异常devision返回零。但实际上它是抛出异常。请帮我解决这个问题。 问候, Anirban Anirban

1 个答案:

答案 0 :(得分:1)

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

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