首页 > 解决方案 > 为 PLSQL 块或过程中的查询设置超时?

问题描述

我知道我们可以在架构级别使用资源管理器设置超时。但我想为过程中的特定查询设置超时并捕获异常。假设我想在 15 秒后停止执行特定查询的查询。有什么办法吗?或者任何可用的超时异常?我正在使用 Oracle Db 12.2。谢谢。

标签: sqloracleplsqloracle12c

解决方案


据我所知,没有这样的事情。

但是,看看这是否有帮助:

  • 而不是运行程序本身,安排它(使用dbms_scheduler
  • 然后,通过查询找到工作dba_scheduler_running_jobs
  • 最后,如果你认为它运行时间过长,杀死它(使用dbms_scheduler.stop_job

是的,我知道 - 你说的是过程中的查询。它使事情变得更加复杂,因为过程的其余部分应该等待该特定查询(现在转换为作业)完成。


但是,如果它是一个循环,您可以设置一个计时器并在每次循环迭代中检查它,然后如果它运行超过 15 秒则退出循环。也许您可以使该查询使用您放入的条件,例如游标 FOR 循环的where子句...


推荐阅读