【发布时间】:2012-05-13 15:14:21
【问题描述】:
当查询无法执行并且返回游标处于失败状态时,我正在尝试从数据库调用中返回 SQL 查询。此查询字符串将用于记录目的。
这样做的一种方法是将包含 SQL 查询的变量保存为字符串,然后使用异常处理程序将每个查询包装在 PL/SQL 块中,如果出现异常,则返回失败的查询字符串状态到 UI 组件。
有没有更好的方法来做到这一点? Oracle 异常对象或任何其他包是否支持此功能?
这个问题似乎与线程重复:Obtain the Query/CommandText that caused a SQLException
但是,我没有在该线程中找到问题的解决方案,我想知道是否有任何 Oracle 支持的新包为我们提供导致异常发生的查询字符串。
【问题讨论】:
-
stackoverflow.com/a/493590/409172 可能会有所帮助。虽然如果您正在调用运行 SQL 的过程,它可能会记录该过程调用而不是真正导致失败的 SQL。
-
您希望在 PL/SQL 块或外部块之外执行此操作,对吗?即,如果您在 SQL*Plus 中运行
select * from duala;,它将被记录到某个地方? -
@jonearles,我会通读一遍,如果它有效,请告诉你,谢谢!
-
@Ben,我没看懂你的想法,能否详细说明一下?
-
@Shankar,这不是一个想法,而是一个问题!您是否希望运行每个 SQL 查询,如果失败,无论从哪里记录它?您在哪里调用存储过程/查询,并且在您的 cmets 中与答案相矛盾时,它明确是哪个?