1693: END fparse_header;
1694: --
1695: FUNCTION enqueue_request RETURN BOOLEAN IS
1696:
1697: enqueue_options DBMS_AQ.enqueue_options_t;
1698: message_properties DBMS_AQ.message_properties_t;
1699: message_handle RAW(16);
1700:
1701: BEGIN
1694: --
1695: FUNCTION enqueue_request RETURN BOOLEAN IS
1696:
1697: enqueue_options DBMS_AQ.enqueue_options_t;
1698: message_properties DBMS_AQ.message_properties_t;
1699: message_handle RAW(16);
1700:
1701: BEGIN
1702: DBMS_AQ.ENQUEUE(queue_name => g_qname,
1698: message_properties DBMS_AQ.message_properties_t;
1699: message_handle RAW(16);
1700:
1701: BEGIN
1702: DBMS_AQ.ENQUEUE(queue_name => g_qname,
1703: enqueue_options => enqueue_options,
1704: message_properties => message_properties,
1705: payload => g_payload,
1706: msgid => message_handle);
1714: --
1715: FUNCTION dequeue_request (p_request IN VARCHAR2,
1716: x_desc OUT NOCOPY VARCHAR2) RETURN VARCHAR2 IS
1717:
1718: dequeue_options DBMS_AQ.dequeue_options_t;
1719: message_properties DBMS_AQ.message_properties_t;
1720: message_handle RAW(16);
1721: l_agent sys.aq$_agent;
1722: l_req_type VARCHAR2(1) :='P';
1715: FUNCTION dequeue_request (p_request IN VARCHAR2,
1716: x_desc OUT NOCOPY VARCHAR2) RETURN VARCHAR2 IS
1717:
1718: dequeue_options DBMS_AQ.dequeue_options_t;
1719: message_properties DBMS_AQ.message_properties_t;
1720: message_handle RAW(16);
1721: l_agent sys.aq$_agent;
1722: l_req_type VARCHAR2(1) :='P';
1723:
1730:
1731: l_calling_fn varchar2(80) := 'fa_asset_trace_pkg.dequeue_request';
1732:
1733: BEGIN
1734: dequeue_options.wait := DBMS_AQ.NO_WAIT;
1735: dequeue_options.consumer_name := p_request;
1736: dequeue_options.navigation := DBMS_AQ.FIRST_MESSAGE;
1737:
1738: begin
1732:
1733: BEGIN
1734: dequeue_options.wait := DBMS_AQ.NO_WAIT;
1735: dequeue_options.consumer_name := p_request;
1736: dequeue_options.navigation := DBMS_AQ.FIRST_MESSAGE;
1737:
1738: begin
1739: LOOP
1740: DBMS_AQ.DEQUEUE(queue_name => g_qname,
1736: dequeue_options.navigation := DBMS_AQ.FIRST_MESSAGE;
1737:
1738: begin
1739: LOOP
1740: DBMS_AQ.DEQUEUE(queue_name => g_qname,
1741: dequeue_options => dequeue_options,
1742: message_properties => message_properties,
1743: payload => g_payload,
1744: msgid => message_handle);
1743: payload => g_payload,
1744: msgid => message_handle);
1745: l_req_type := g_payload.req_type;
1746: x_desc := g_payload.l_desc;
1747: dequeue_options.navigation := DBMS_AQ.NEXT_MESSAGE;
1748: END LOOP;
1749: --remove subscriber.
1750: l_agent := sys.aq$_agent(p_request,null,null);
1751: dbms_aqadm.remove_subscriber(queue_name => g_qname, subscriber => l_agent);
1747: dequeue_options.navigation := DBMS_AQ.NEXT_MESSAGE;
1748: END LOOP;
1749: --remove subscriber.
1750: l_agent := sys.aq$_agent(p_request,null,null);
1751: dbms_aqadm.remove_subscriber(queue_name => g_qname, subscriber => l_agent);
1752: COMMIT;
1753: exception
1754: WHEN no_messages THEN
1755: log(l_calling_fn,'Queue is empty.');