我目前正在使用Sybase ASE 12.5。我的代码如下:
create procedure test_launcher_fail_wrapper
as
begin
select convert(numeric(2),1234345)
if @@error != 0
begin
select "SP failed to execute"
return 1
end
end
在这里,我试图将非常大的值/金额(1234345)转换为数字大小2.这是不可能的,它会产生错误。
问题:
答案 0 :(得分:0)
我在procs中处理错误处理与应用程序中的错误处理类似 - 如果你有机会通过处理错误贡献一些实际值,那么一定要这样做,但如果你真的不能做任何事情为了帮助你,那么你最好放手吧。
作为添加值的示例,我有一个或两个在错误消息中添加上下文信息的过程,比如与更新操作冲突的ID值列表。在这种特殊情况下,我知道proc的上游消费者将记录此错误,并且操作员可以使用该文本,在调试问题时,他们会发现这些信息很有价值。我也知道,虽然这个条件是一个真正的错误,但它已经不时发生,并且格式化错误的努力是值得的。
答案 1 :(得分:0)
这是否能解决您的错误?
create procedure test_launcher_fail_wrapper
as
begin
declare @database_err int
set @database_err = 0
select convert(numeric(2),1234345)
set @database_err = @@error
if @database_err <> 0
begin
PRINT 'SP failed to execute'
return 1
end
end
答案 2 :(得分:0)