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