3

当查询无法执行并且返回游标处于失败状态时,我试图从数据库调用中返回 SQL 查询。此查询字符串将用于记录目的。

一种方法是将包含 SQL 查询的变量保存为字符串,然后使用异常处理程序将每个查询包装在 PL/SQL 块中,如果出现异常,则将带有失败状态的查询字符串返回给用户界面组件。

有一个更好的方法吗?Oracle 异常对象或任何其他包是否支持此功能?

这个问题似乎与线程重复:获取导致 SQLException 的 Query/CommandText

但是,我没有在该线程中找到问题的解决方案,我想知道是否有任何 Oracle 支持的新包为我们提供了导致异常发生的查询字符串。

4

1 回答 1

1

当您从外部语言(Java、C#)调用数据库时,您可能可以通过实现自己的 JDBC(或其他)驱动程序来实现。

您可以通过将现实世界委托给普通驱动程序来做到这一点,但是每当将语句发送到数据库时,您都会记住该语句,并且如果导致异常,您将创建一个新异常,该异常还包括 sql 语句(可能还有绑定变量)。

请注意,这只会给您您的陈述。如果您执行存储过程或触发触发器,而触发器又失败了,您只会得到原始语句,而不是实际失败的语句。

于 2012-05-04T05:15:38.977 回答