我正在创建一个通过JDBC调用的sybase存储的prodedure。在某些错误条件下,我希望我的存储过程向JDBC调用者返回警告。我需要添加到存储过程中
Statement.getWarnings()
返回一个SqlWarning,其中包含我选择的错误消息?
答案 0 :(得分:1)
除非我弄错了,否则您可以使用错误消息处理程序将SQL异常重新映射到SQL警告。更多信息可以在jConnect 6 Programmer's Reference中找到。有关如何创建自定义消息处理程序的信息,请参阅第2章“处理错误消息”一节。
这当然意味着您仍然必须通过存储过程中的raiserror引发错误,唯一的好处是您可以将某些错误重新映射到警告。消息处理程序的复杂性将与存储过程引发的用户错误数成正比。
当您从存储过程引发错误时,将引发SQLExceptions而不是SQLWarnings的原因是Sybase自动将用户错误的严重性设置为16 - 称为“其他用户错误”。严重级别16的错误会自动转换为SQLExceptions。