| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.server -> Re: Blocking stored procedure leaves an opened session
No, actually what you want is to set the wait parameter to something
real rather than dbms_aq.no_wait ... seconds when you dequeue ... see
here for an example ... I have a wait of 2 seconds ...
unnecessary stuff is deleted to save space ...
<example>
....
dequeue_options DBMS_AQ.dequeue_options_t;
no_messages EXCEPTION;
PRAGMA EXCEPTION_INIT (no_messages, -25228);
--
gv_feed_name := UPPER (subscribername);
-- this will allow us to identify the tracefile quickly ...
EXECUTE IMMEDIATE 'alter session set tracefile_identifier="' ||
UPPER (subscribername) || '"';
--
gv_identifier := LOWER('stw:' || SUBSTR(gv_feed_name,1,3));
p('Entered start_feed.');
dbms_application_info.set_module('XXXX_PKG',gv_identifier ||
' feed started.');
-- Set AQ Options
-- Changed by Raj ... we should timeout every 2 seconds ...
p('De-queue timeout set to 2 seconds, complaint threshold is 5
minutes.');
dequeue_options.WAIT := 2; -- dbms_aq.no_wait;
dequeue_options.navigation := DBMS_AQ.first_message;
dequeue_options.dequeue_mode := DBMS_AQ.remove;
dequeue_options.consumer_name := subscribername;
--
p('Awaiting dequeue.');
WHILE (1 = 1)
LOOP
-- main message retreival
BEGIN
DBMS_AQ.dequeue ( 'XXXX.YYYY'
,dequeue_options
,message_properties
,dequeue_message
,dequeue_message_handle);
....
EXCEPTION
WHEN no_messages THEN
this is raised when my code doesn't get any message in 2
seconds ...
you can handle it any way you like.
...
end;
HTH
Raj
Received on Tue Jan 20 2004 - 14:27:01 CST
![]() |
![]() |