我从PL / SQL程序调用DBMS_AQ.DEQUEUE。我不想永远等待,但如果在我再次尝试出列之前队列中没有数据,则会定期超时。 DEQUEUE过程的Oracle documentation清楚地说明了如何指定超时(使用dequeue_options中的等待字段)。但它没有提到超时情况下会发生什么。
我原本希望文档指定如何处理超时情况但是我忽略了它,这是一个文档疏忽或它应该是显而易见的只是我缺乏PL / SQL经验使我不知道如何做到这一点。无论如何,我们非常感谢任何有关如何最好地处理/捕获DEQUEUE超时的建议。
答案 0 :(得分:2)
对于其他任何寻找答案的人来说,这就是我所追求的目标(感谢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;