Search notes:

dbms_pipe.purge

blue.sql

prompt going to write two messages

declare -- {

   procedure send_msg(m in varchar2) is -- {
      v number;
   begin

        dbms_pipe.pack_message(m);
        v := dbms_pipe.send_message('tq84-purge-pipe');

   end send_msg; -- }

begin

-- Write two messages into a pipe

   send_msg('First message');
   send_msg('Second  message');

end; -- }
/

prompt sleeping six seconds, before writing another message
exec dbms_lock.sleep (6)

declare -- {

   procedure send_msg(m in varchar2) is -- {
      v number;
   begin

        dbms_pipe.pack_message(m);
        v := dbms_pipe.send_message('tq84-purge-pipe');

   end send_msg; -- }

begin

-- Write two messages into a pipe

   send_msg('Third message');

end; -- }
/

exit
Github repository Oracle-Patterns, path: /Installed/dbms/pipe/purge/blue.sql

green.sql

prompt Sleeping three seconds, before reading message
exec dbms_lock.sleep(3)

declare

   procedure read_msg is

       v number;
       m varchar2(4096);

   begin

       v := dbms_pipe.receive_message('tq84-purge-pipe');

       dbms_pipe.unpack_message(m);

       dbms_output.put_line('Message received [' || v || ']');
       dbms_output.put_line('  ' || m);

   end read_msg;
 
begin

-- Waiting for the message sent in the green session:
-- This read should find the 'First message'
   read_msg;

-- Calling dbms_pipe.purge here should delete
-- the 'Second message':
   dbms_pipe.purge('tq84-purge-pipe');

-- Now, 'Third message' should be read as
-- soon as it is posted.
   read_msg;

end;
/

exit
Github repository Oracle-Patterns, path: /Installed/dbms/pipe/purge/green.sql

run.bat

@set connect_string=rene/rene

@start session_blue.bat
@start session_green.bat
Github repository Oracle-Patterns, path: /Installed/dbms/pipe/purge/run.bat

session_blue.bat

@color 1f

@sqlplus -S %connect_string% @blue
Github repository Oracle-Patterns, path: /Installed/dbms/pipe/purge/session_blue.bat

ession_green.bat

@color 2f

@sqlplus -S %connect_string% @green
Github repository Oracle-Patterns, path: /Installed/dbms/pipe/purge/session_green.bat

See also

dbms_pipe

Index