Connect programmer/p@9i


create or replace package Wait is
  procedure Go;
  procedure Finish;
end Wait;
/

Show Errors

create or replace package body Wait is
  g_pipe_name constant varchar2(30) := 'Slow_Motion';

  procedure Go is

    v_dummy integer; v_item varchar2(4000);
  begin
    Dbms_Pipe.Purge ( pipename => g_pipe_name );

    -- The following call to Receive_Message will
    -- wait until another session calls Wait.Finish
    v_dummy := Dbms_Pipe.Receive_Message ( pipename => g_pipe_name );

    Dbms_Pipe.Unpack_Message ( item => v_item );
  end Go;

  procedure Finish is
    v_dummy integer;
  begin
    Dbms_Pipe.Pack_Message ( item => 'stop' );
    v_dummy := Dbms_Pipe.Send_Message ( pipename => g_pipe_name );

  end Finish;
end Wait;
/
Show Errors
grant execute on Wait to public;