我是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
答案 0 :(得分:1)
为了能够更好地捕获/处理“除以零”错误,您必须为Sybase服务器中的 arithignore arith_overflow 系统选项设置适当的值。 Sybase在线手册中有一些很好的文档: