tsql - 如何在存储过程中进行错误处理

标签 tsql stored-procedures error-handling sap-ase

我目前正在使用 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。这是不可能的,它会产生错误。

问题:

  1. @@error 在这里有用吗?我运行了这个 SP 但它从未进入 错误处理
  2. 如何错误处理这类场景?

最佳答案

我对待过程中的错误处理类似于应用程序中的错误处理——如果你有机会通过处理错误来贡献一些实际值(value),那么一定要这样做,但如果你真的无能为力帮助,那么你最好还是放手吧。

作为添加值的示例,我有一个或两个在错误消息中添加上下文信息的过程,例如与更新操作冲突的 ID 值列表。在这种特殊情况下,我知道 proc 的上游消费者将记录此错误,并且文本将可供运算符(operator)使用,运算符(operator)会在调试问题时发现此信息很有值(value)。我也知道虽然这种情况是一个真正的错误,但众所周知它会不时发生,因此格式化错误的努力是值得的。

关于tsql - 如何在存储过程中进行错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9582885/

相关文章:

javascript - 客户端Javascript调用Postgresql存储过程

java - 08-27 08 :26:11.330: A/libc(23962): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 23962

sql - 通过根据另一个表中的值替换子字符串来更新表字段

c# - 无法使用 Entity Framework 开始分布式事务

sql - 如何将临时表作为参数传递到单独的存储过程中

ruby-on-rails - 如何redirect_to并保留对象的属性

c++ - 断言和 NDEBUG

SQL将日期时间的格式更改为特定样式

sql - SQL 服务器查询中的 NULL 值

sql - 在特定单词后返回 SUBSTRING 并在第一个引号处结束