36-1:
	conn sys/oracle as sysdba
	GRANT EXECUTE ON dbms_pipe TO scott;
36-2:
	CREATE OR REPLACE PROCEDURE send_message(
	  pipename VARCHAR2,message VARCHAR2)
	IS
	  flag INT;
	BEGIN
	  flag:=dbms_pipe.create_pipe(pipename);
	  IF flag=0 THEN
	     dbms_pipe.pack_message(message);
	     flag:=dbms_pipe.send_message(pipename);
	  END IF;
	END;
	/
36-3:
	CREATE OR REPLACE FUNCTION return_message
	  (pipename VARCHAR2) RETURN VARCHAR2 IS
	  flag INT;
	  message VARCHAR2(1000);
	BEGIN
	  flag:=dbms_pipe.receive_message(pipename);
	  IF flag=0 THEN
	     dbms_pipe.unpack_message(message);
	     flag:=dbms_pipe.remove_pipe(pipename);
	  END IF;
	  RETURN message;
	END;
	/
36-4:
	exec send_message('p1','hello')
	VAR message VARCHAR2(100)
	exec :message:=return_message('p1')
	PRINT message	
