Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle PL/SQL:如何处理DBMS_AQ.DEQUEUE的超时_Oracle_Plsql_Advanced Queuing - Fatal编程技术网

Oracle PL/SQL:如何处理DBMS_AQ.DEQUEUE的超时

Oracle PL/SQL:如何处理DBMS_AQ.DEQUEUE的超时,oracle,plsql,advanced-queuing,Oracle,Plsql,Advanced Queuing,我正在从PL/SQL程序调用DBMS_AQ.DEQUEUE。我不想永远等待,但如果队列中没有数据,我会在再次尝试出列之前定期超时。关于如何指定超时(使用“出列”选项中的“等待”字段),出列过程的详细信息非常清楚。但是,它没有提到在超时的情况下会发生什么 我本希望文档能够指定如何处理超时情况,但要么是我忽略了它,这是文档的疏忽,要么应该是显而易见的,正是我缺乏PL/SQL经验,使我不知道如何处理超时情况。在任何情况下,对于如何最好地处理/捕获出列超时的任何建议,我们都将不胜感激。对于任何其他正在寻

我正在从PL/SQL程序调用DBMS_AQ.DEQUEUE。我不想永远等待,但如果队列中没有数据,我会在再次尝试出列之前定期超时。关于如何指定超时(使用“出列”选项中的“等待”字段),出列过程的详细信息非常清楚。但是,它没有提到在超时的情况下会发生什么


我本希望文档能够指定如何处理超时情况,但要么是我忽略了它,这是文档的疏忽,要么应该是显而易见的,正是我缺乏PL/SQL经验,使我不知道如何处理超时情况。在任何情况下,对于如何最好地处理/捕获出列超时的任何建议,我们都将不胜感激。

对于任何其他正在寻找答案的人,我的目标是(感谢ninesided的评论):


“处理超时”是什么意思?当你拿到你的
ORA-25228
并抓到它时,你就不能再次尝试下队吗?好的,也许这已经是答案了。文档中没有提到ORA-25228。我希望它能告诉我在哪种情况下会抛出哪些异常,比如在Java文档中。我试试看。
begin
  dbms_aq.dequeue(
    payload            => payload
   ,queue_name         => queue_name
   ,dequeue_options    => deq_opt
   ,message_properties => msg_prty
   ,msgid              => msgid
  );
exception
  when others then
    if sqlcode = -25228 then
      -- handle timeout here
    end if;
end;