09.12.2012 Views

Advanced Queuing - Oracle

Advanced Queuing - Oracle

Advanced Queuing - Oracle

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

deq_cust_data BOLADM.customer_typ;<br />

deq_book_data BOLADM.book_typ;<br />

deq_item_data BOLADM.orderitem_typ;<br />

deq_msgid RAW(16);<br />

dopt dbms_aq.dequeue_options_t;<br />

mprop dbms_aq.message_properties_t;<br />

deq_order_data BOLADM.order_typ;<br />

qname VARCHAR2(30);<br />

no_messages exception;<br />

end_of_group exception;<br />

pragma exception_init (no_messages, -25228);<br />

pragma exception_init (end_of_group, -25235);<br />

new_orders BOOLEAN := TRUE;<br />

BEGIN<br />

dopt.wait := 1;<br />

dopt.navigation := DBMS_AQ.FIRST_MESSAGE;<br />

qname := ’OE.OE_neworders_que’;<br />

WHILE (new_orders) LOOP<br />

BEGIN<br />

LOOP<br />

BEGIN<br />

dbms_aq.dequeue(<br />

queue_name => qname,<br />

dequeue_options => dopt,<br />

message_properties => mprop,<br />

payload => deq_order_data,<br />

msgid => deq_msgid);<br />

deq_item_data := deq_order_data.items(1);<br />

deq_book_data := deq_item_data.item;<br />

deq_cust_data := deq_order_data.customer;<br />

IF (deq_cust_data IS NOT NULL) THEN<br />

dbms_output.put_line(’ **** NEXT ORDER **** ’);<br />

dbms_output.put_line(’order_num: ’ ||<br />

deq_order_data.orderno);<br />

dbms_output.put_line(’ship_state: ’ ||<br />

deq_cust_data.state);<br />

END IF;<br />

dbms_output.put_line(’ ---- next book ---- ’);<br />

dbms_output.put_line(’ book_title: ’ ||<br />

deq_book_data.title ||<br />

Dequeue Features<br />

A Sample Application Using AQ 8-67

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!