콘텐츠로 이동

DEQUEUE

DEQUEUE#

구문#

dequeue ::=#

dequeue_image244

fifo_option ::=#

fifo_image244

설명#

DEQUEUE 구문은 where_clause 절의 조건에 맞는 메시지를 얻어 오고 해당 메시지를 큐에서 삭제한다.

fifo_option#

FIFO 옵션이 설정되어 있거나 아무 옵션도 설정하지 않은 경우에는 조건에 맞는 메시지 중 가장 오래된 메시지를 얻어 오고, LIFO 옵션이 설정된 경우에는 가장 최신의 메시지를 얻어 온다.

WAIT integer#

DEQUEUE 문은 큐가 비어있을 경우에 메시지가 들어올 때까지 대기한다. WAIT절에 명시한 시간만큼 대기하며, 시간 단위는 second(초), millisecond(msec, 1/1000초), microsecond(μsec, 1/1000000초)이며 표기하지 않으면 초 단위가 적용된다. 대기 시간이 설정되지 않은 경우, DEQUEUE 문은 무한 대기할 것이다.

반면 NOWAIT 옵션은 기다리지 않으므로, 큐가 비어있는 경우 즉시 "No rows selected." 메시지를 출력한다.

주의 사항#

DEQUEUE 구문의 사용시에 다음과 같은 점에 주의해야 한다.

  • queue_column_list에는 큐 테이블 내의 칼럼명만 지정 가능하다.
  • DEQUEUE문은 SELECT 구문의 일부 특징을 가지고 있지만 DEQUEUE문의 FROM 절에는 단 하나의 큐 테이블 이름만 지정이 가능하다. 두개 이상의 큐 테이블 이름이 오면 에러가 발생한다.
  • DEQUEUE구문의 WHERE 절에는 부질의(Subquey)가 올 수 없다.

예제#

<질의> 메시지 큐 Q1에서 Correlation ID가 237인 메시지들을 모두 읽어라.

DEQUEUE MESSAGE, CORRID FROM Q1 WHERE CORRID=237;