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

PL/SQL: How to handle timeout for DBMS_AQ.DEQUEUE

我正在从 PL/SQL 程序调用 DBMS_AQ.DEQUEUE。我不想永远等待,但如果队列中没有数据,我会定期超时,然后再尝试再次出队。 DEQUEUE 过程的 Oracle documentation 清楚地说明了如何指定超时(使用 dequeue_options 中的等待字段)。但是,它确实没有提及超时时会发生什么。

我原以为文档会指定如何处理超时情况,但要么我忽略了它,这是文档疏忽,要么它应该是显而易见的,只是我缺乏 PL/SQL 经验,这让我无法做到弄清楚该怎么做。无论如何,我们将不胜感激任何有关如何最好地处理/捕获 DEQUEUE 超时的建议。

对于正在寻找此问题答案的任何其他人,这就是我所追求的(感谢 ninesided 的评论):

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;