我正在从 PL/SQL 程序调用 DBMS_AQ.DEQUEUE。我不想永远等待,但如果在再次尝试出队之前队列中没有数据,我会定期超时。 DEQUEUE 过程的Oracle 文档清楚地说明了如何指定超时(使用 dequeue_options 中的 wait 字段)。然而,它没有提及超时时会发生什么。
我本来期望文档指定如何处理超时情况,但要么是我忽略了它,要么是文档疏忽,要么它应该是显而易见的,只是我缺乏 PL/SQL 经验,让我不知道如何去做。在任何情况下,任何有关如何最好地处理/捕获出队超时的建议将不胜感激。
对于其他正在寻找答案的人,这就是我所追求的(感谢 nineside 的评论):
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;
嗨,团队,请告诉我如何打印/dbmsoutput.put_line 正在出列的内容我遇到了一些错误?