2014-09-19 2 views
0

Oracle 큐에서 메시지를 dequeue하려고하는데 dequeue_options 설정에 문제가 있습니다. 입력 값 (타임 스탬프)보다 ENQ_TIME 큰 메시지를 큐에서 제거하려고합니다. 매개 변수 나 msgid 또는 enq_tid를 사용하여 메시지를 큐에서 제거 할 수있었습니다. 내가 사용했습니다.Oracle AQ dequeueing 매개 변수

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

작동하고 있습니다. enq_time과 동일한 작업을 시도 할 때 mesages가 없다는 오류가 발생합니다. 나는 연산자와 연산자의 양쪽에서> 기호와 다른 to_char 변환 문자열을 사용하려고 시도했지만 제대로 작동하지 않습니다.

알려 주시기 바랍니다.

답변

0

MSGID를 대기열에서 제외하고 ENQ_TIME이 날짜 입력보다 낮 으면 대기열에서 상기 MSGID를 사용하여 상태를 0으로 업데이트 할 수 있습니다.

0

해결책은 대기열 테이블의 커서를 사용하여 관련성이 높은 msgid-s를 추출하는 것입니다. 그런 다음 msgid의 메시지에 액세스하십시오. 그러나 올바른 deq_condition이 작동해야한다고 생각합니다. 더 나은 방법이 있어야합니다.