0

我正在尝试将消息从 Oracle 队列中取出,但在设置 dequeue_options 时遇到了问题。我正在尝试使 ENQ_TIME 大于输入值(时间戳)的消息出列。我设法通过参数、msgid 或 enq_tid 使消息出列。我用了

dequeue_options.deq_condition := 'tab.enq_tid = ''' || i_enq_tid || ''''

那是有效的。当我尝试对 enq_time 执行相同操作时,我收到一个错误,即没有消息。我尝试在运算符的两侧使用 > 符号和不同的 to_char 转换字符串,但无法正常工作。

请指教。

4

2 回答 2

0

解决方案是使用队列表上的游标来提取相关的 msgid -s。然后通过 msgid 访问消息。但是我觉得正确的 deq_condition 应该可以工作。一定有更好的出路。

于 2014-09-24T13:34:11.037 回答
0

也许您可以出队,保留 MSGID,如果 ENQ_TIME 低于您输入的日期,则使用队列中的所述 MSGID 将状态更新为 0。

于 2014-09-23T12:28:32.373 回答