<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL%2FSystem_Packages%2FDBMS_PIPE</id>
		<title>Oracle PL/SQL/System Packages/DBMS PIPE - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL%2FSystem_Packages%2FDBMS_PIPE"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/System_Packages/DBMS_PIPE&amp;action=history"/>
		<updated>2026-04-04T15:55:56Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/System_Packages/DBMS_PIPE&amp;diff=1236&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/System_Packages/DBMS_PIPE&amp;diff=1236&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:19Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/System_Packages/DBMS_PIPE&amp;diff=1237&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/System_Packages/DBMS_PIPE&amp;diff=1237&amp;oldid=prev"/>
				<updated>2010-05-26T09:55:17Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==An anonymous block program to create a pipe.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2&lt;br /&gt;
  3    &lt;br /&gt;
  4    returnValue INTEGER;&lt;br /&gt;
  5&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7&lt;br /&gt;
  8    &lt;br /&gt;
  9    returnValue := DBMS_PIPE.CREATE_PIPE(&amp;quot;PLSQL$THREAD_ABORT&amp;quot;, 20000 );&lt;br /&gt;
 10&lt;br /&gt;
 11    &lt;br /&gt;
 12    returnValue := DBMS_PIPE.CREATE_PIPE(&amp;quot;PLSQL$THREAD_ABORT_LOCK&amp;quot;, 20000 );&lt;br /&gt;
 13&lt;br /&gt;
 14    &lt;br /&gt;
 15    returnValue := DBMS_PIPE.CREATE_PIPE(&amp;quot;PLSQL$THREAD_COMMIT&amp;quot;, 20000 );&lt;br /&gt;
 16&lt;br /&gt;
 17    &lt;br /&gt;
 18    returnValue := DBMS_PIPE.CREATE_PIPE(&amp;quot;PLSQL$THREAD_COMMIT_LOCK&amp;quot;, 20000 );&lt;br /&gt;
 19&lt;br /&gt;
 20    &lt;br /&gt;
 21    returnValue := DBMS_PIPE.CREATE_PIPE(&amp;quot;PLSQL$THREAD_COMPLETE&amp;quot;, 20000 );&lt;br /&gt;
 22&lt;br /&gt;
 23    &lt;br /&gt;
 24    returnValue := DBMS_PIPE.CREATE_PIPE(&amp;quot;PLSQL$THREAD_COMPLETE_LOCK&amp;quot;, 20000 );&lt;br /&gt;
 25&lt;br /&gt;
 26    &lt;br /&gt;
 27    returnValue := DBMS_PIPE.CREATE_PIPE(&amp;quot;PLSQL$THREAD_REGISTER&amp;quot;, 20000 );&lt;br /&gt;
 28&lt;br /&gt;
 29    &lt;br /&gt;
 30    returnValue := DBMS_PIPE.CREATE_PIPE(&amp;quot;PLSQL$THREAD_REGISTER_LOCK&amp;quot;, 20000 );&lt;br /&gt;
 31&lt;br /&gt;
 32    &lt;br /&gt;
 33    IF (returnValue = 0) THEN&lt;br /&gt;
 34      DBMS_OUTPUT.PUT_LINE(&amp;quot;THREAD_PIPES are created.&amp;quot;);&lt;br /&gt;
 35    END IF;&lt;br /&gt;
 36&lt;br /&gt;
 37  EXCEPTION&lt;br /&gt;
 38&lt;br /&gt;
 39    &lt;br /&gt;
 40    WHEN others THEN&lt;br /&gt;
 41      DBMS_OUTPUT.PUT_LINE(SQLERRM);&lt;br /&gt;
 42      RETURN;&lt;br /&gt;
 43&lt;br /&gt;
 44  END;&lt;br /&gt;
 45  /&lt;br /&gt;
THREAD_PIPES are created.&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==An anonymous block program to delete a pipe==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
SQL&amp;gt; SET ECHO ON&lt;br /&gt;
SQL&amp;gt; SET SERVEROUTPUT ON SIZE 1000000&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; &lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2&lt;br /&gt;
  3    &lt;br /&gt;
  4    returnValue INTEGER;&lt;br /&gt;
  5&lt;br /&gt;
  6    &lt;br /&gt;
  7    FUNCTION get_user&lt;br /&gt;
  8      RETURN VARCHAR2 IS&lt;br /&gt;
  9&lt;br /&gt;
 10    BEGIN&lt;br /&gt;
 11&lt;br /&gt;
 12    &lt;br /&gt;
 13      FOR i IN (SELECT user FROM dual) LOOP&lt;br /&gt;
 14        return i.user;&lt;br /&gt;
 15      END LOOP;&lt;br /&gt;
 16&lt;br /&gt;
 17    END get_user;&lt;br /&gt;
 18&lt;br /&gt;
 19  BEGIN&lt;br /&gt;
 20&lt;br /&gt;
 21    &lt;br /&gt;
 22    returnValue := DBMS_PIPE.REMOVE_PIPE(get_user||&amp;quot;$&amp;quot;||&amp;quot;MESSAGE_INBOX&amp;quot;);&lt;br /&gt;
 23    returnValue := DBMS_PIPE.REMOVE_PIPE(get_user||&amp;quot;$&amp;quot;||&amp;quot;MESSAGE_OUTBOX&amp;quot;);&lt;br /&gt;
 24&lt;br /&gt;
 25  END;&lt;br /&gt;
 26  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==An Oracle9i Pipelined Table Function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type dateTableType as table of date;&lt;br /&gt;
  2  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace function month_generator_piped(p_num_months in number)&lt;br /&gt;
  2     RETURN dateTableType&lt;br /&gt;
  3     PIPELINED&lt;br /&gt;
  4  AS&lt;br /&gt;
  5      month_table dateTableType := dateTableType();&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7      for i in 1..p_num_months loop&lt;br /&gt;
  8          PIPE ROW ( add_months(sysdate, -i) );&lt;br /&gt;
  9      end loop;&lt;br /&gt;
 10      return;&lt;br /&gt;
 11&lt;br /&gt;
 12  END;&lt;br /&gt;
 13  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; show errors&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from TABLE( CAST (month_generator_piped(12) AS dateTableType) );&lt;br /&gt;
COLUMN_VA&lt;br /&gt;
---------&lt;br /&gt;
26-SEP-09&lt;br /&gt;
26-AUG-09&lt;br /&gt;
26-JUL-09&lt;br /&gt;
26-JUN-09&lt;br /&gt;
26-MAY-09&lt;br /&gt;
26-APR-09&lt;br /&gt;
26-MAR-09&lt;br /&gt;
26-FEB-09&lt;br /&gt;
26-JAN-09&lt;br /&gt;
26-DEC-08&lt;br /&gt;
26-NOV-08&lt;br /&gt;
26-OCT-08&lt;br /&gt;
12 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select to_Char(x.column_value, &amp;quot;mm/yyyy&amp;quot;)&lt;br /&gt;
  2  from TABLE( month_generator_piped(12) ) x&lt;br /&gt;
  3  group by to_Char(x.column_value, &amp;quot;mm/yyyy&amp;quot;) ;&lt;br /&gt;
TO_CHAR&lt;br /&gt;
-------&lt;br /&gt;
01/2009&lt;br /&gt;
02/2009&lt;br /&gt;
03/2009&lt;br /&gt;
04/2009&lt;br /&gt;
05/2009&lt;br /&gt;
06/2009&lt;br /&gt;
07/2009&lt;br /&gt;
08/2009&lt;br /&gt;
09/2009&lt;br /&gt;
10/2008&lt;br /&gt;
11/2008&lt;br /&gt;
12/2008&lt;br /&gt;
12 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DBMS_PIPE.PACK_MESSAGE==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2          v_statpipe1 integer;&lt;br /&gt;
  3          v_statpipe2 integer;&lt;br /&gt;
  4          v_pubchar VARCHAR2(100) := &amp;quot;This is a text string&amp;quot;;&lt;br /&gt;
  5          v_pubdate DATE := SYSDATE;&lt;br /&gt;
  6          v_pubnum NUMBER := 109;&lt;br /&gt;
  7     BEGIN&lt;br /&gt;
  8          v_statpipe1 := DBMS_PIPE.CREATE_PIPE(&amp;quot;myprivatepipe&amp;quot;);&lt;br /&gt;
  9         IF (v_statpipe1 = 0) THEN&lt;br /&gt;
 10              DBMS_PIPE.PACK_MESSAGE(&amp;quot;privateline1&amp;quot;);&lt;br /&gt;
 11              DBMS_PIPE.PACK_MESSAGE(&amp;quot;privateline2&amp;quot;);&lt;br /&gt;
 12              v_statpipe1 := DBMS_PIPE.SEND_MESSAGE(&amp;quot;myprivatepipe&amp;quot;);&lt;br /&gt;
 13         END IF;&lt;br /&gt;
 14&lt;br /&gt;
 15         DBMS_PIPE.PACK_MESSAGE(v_pubchar); &lt;br /&gt;
 16         DBMS_PIPE.PACK_MESSAGE(v_pubdate); &lt;br /&gt;
 17         DBMS_PIPE.PACK_MESSAGE(v_pubnum);  &lt;br /&gt;
 18         v_statpipe2 := DBMS_PIPE.SEND_MESSAGE(&amp;quot;mypublicpipe&amp;quot;);&lt;br /&gt;
 19         DBMS_OUTPUT.PUT_LINE(&amp;quot;The Status of your Private Pipe is: &amp;quot; || v_statpipe1 );&lt;br /&gt;
 20         DBMS_OUTPUT.PUT_LINE(&amp;quot;The Status of your Public Pipe is: &amp;quot; ||  v_statpipe2 );&lt;br /&gt;
 21    END;&lt;br /&gt;
 22  /&lt;br /&gt;
The Status of your Private Pipe is: 0&lt;br /&gt;
The Status of your Public Pipe is: 0&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==dbms_pipe.remove_pipe==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;    DECLARE&lt;br /&gt;
  2          v_stat NUMBER ;&lt;br /&gt;
  3     BEGIN&lt;br /&gt;
  4          v_stat := dbms_pipe.remove_pipe(&amp;quot;myprivatepipe&amp;quot;);&lt;br /&gt;
  5          DBMS_OUTPUT.PUT_LINE(&amp;quot;The status for removing the private pipe is: &amp;quot; || v_stat);&lt;br /&gt;
  6          v_stat := dbms_pipe.remove_pipe(&amp;quot;mypublicpipe&amp;quot;);&lt;br /&gt;
  7          DBMS_OUTPUT.PUT_LINE(&amp;quot;The status for removing the public pipe is: &amp;quot;|| v_stat);&lt;br /&gt;
  8    END;&lt;br /&gt;
  9  /&lt;br /&gt;
The status for removing the private pipe is: 0&lt;br /&gt;
The status for removing the public pipe is: 0&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DBMS_PIPE.UNPACK_MESSAGE==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;   DECLARE&lt;br /&gt;
  2          v_statpipe1 integer;&lt;br /&gt;
  3          v_statpipe2 integer;&lt;br /&gt;
  4          v_holdtype INTEGER;&lt;br /&gt;
  5          v_holdchar VARCHAR2(100);&lt;br /&gt;
  6          v_holddate DATE;&lt;br /&gt;
  7          v_holdnum NUMBER;&lt;br /&gt;
  8     BEGIN&lt;br /&gt;
  9         v_statpipe1 := DBMS_PIPE.RECEIVE_MESSAGE(&amp;quot;myprivatepipe&amp;quot;,15);&lt;br /&gt;
 10         DBMS_PIPE.UNPACK_MESSAGE(v_holdchar);&lt;br /&gt;
 11         DBMS_OUTPUT.PUT_LINE(v_holdchar);&lt;br /&gt;
 12         DBMS_PIPE.UNPACK_MESSAGE(v_holdchar);&lt;br /&gt;
 13         DBMS_OUTPUT.PUT_LINE(v_holdchar);&lt;br /&gt;
 14&lt;br /&gt;
 15       v_statpipe2 := DBMS_PIPE.RECEIVE_MESSAGE(&amp;quot;mypublicpipe&amp;quot;,10);&lt;br /&gt;
 16         LOOP&lt;br /&gt;
 17              v_holdtype := DBMS_PIPE.NEXT_ITEM_TYPE;&lt;br /&gt;
 18              IF v_holdtype = 0 THEN EXIT;&lt;br /&gt;
 19              ELSIF v_holdtype = 6 THEN&lt;br /&gt;
 20                   DBMS_PIPE.UNPACK_MESSAGE(v_holdnum);&lt;br /&gt;
 21              ELSIF v_holdtype = 9 THEN&lt;br /&gt;
 22                   DBMS_PIPE.UNPACK_MESSAGE(v_holdchar);&lt;br /&gt;
 23              ELSIF v_holdtype = 12 THEN&lt;br /&gt;
 24                   DBMS_PIPE.UNPACK_MESSAGE(v_holddate);&lt;br /&gt;
 25              END IF;&lt;br /&gt;
 26         END LOOP;&lt;br /&gt;
 27         DBMS_OUTPUT.PUT_LINE(v_holdchar || &amp;quot; &amp;quot; || v_holddate || &amp;quot; &amp;quot;&lt;br /&gt;
 28              || v_holdnum);&lt;br /&gt;
 29    END;&lt;br /&gt;
 30  /&lt;br /&gt;
privateline1&lt;br /&gt;
privateline2&lt;br /&gt;
This is a text string 16-JUN-2008 18:14:00 109&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Define an anonymous block to populate the local private pipe.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2&lt;br /&gt;
  3    &lt;br /&gt;
  4    message   VARCHAR2(30 CHAR);&lt;br /&gt;
  5    success   INTEGER;&lt;br /&gt;
  6&lt;br /&gt;
  7  BEGIN&lt;br /&gt;
  8&lt;br /&gt;
  9    &lt;br /&gt;
 10    message := DBMS_PIPE.UNIQUE_SESSION_NAME;&lt;br /&gt;
 11&lt;br /&gt;
 12    &lt;br /&gt;
 13    DBMS_PIPE.RESET_BUFFER;&lt;br /&gt;
 14&lt;br /&gt;
 15    &lt;br /&gt;
 16    DBMS_PIPE.PACK_MESSAGE(message);&lt;br /&gt;
 17&lt;br /&gt;
 18    &lt;br /&gt;
 19    DBMS_OUTPUT.PUT_LINE(&amp;quot;Written to pipe [&amp;quot;||message||&amp;quot;]&amp;quot;);&lt;br /&gt;
 20&lt;br /&gt;
 21  END;&lt;br /&gt;
 22  /&lt;br /&gt;
Written to pipe [ORA$PIPE$0023000C0001]&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Run a DBMS_PIPE.RECEIVE_MESSAGE call to empty the local buffer==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
SQL&amp;gt; SET ECHO ON&lt;br /&gt;
SQL&amp;gt; SET SERVEROUTPUT ON SIZE 1000000&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; &lt;br /&gt;
SQL&amp;gt; SELECT   DBMS_PIPE.RECEIVE_MESSAGE(&amp;quot;Nowhere&amp;quot;,0)&lt;br /&gt;
  2  FROM     dual;&lt;br /&gt;
DBMS_PIPE.RECEIVE_MESSAGE(&amp;quot;NOW&lt;br /&gt;
------------------------------&lt;br /&gt;
                             1&lt;br /&gt;
1 row selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==This script deletes a pipe if it exists in the context of the current session, then recreates it.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET ECHO ON&lt;br /&gt;
SQL&amp;gt; SET SERVEROUTPUT ON SIZE 1000000&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; &lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2&lt;br /&gt;
  3  &lt;br /&gt;
  4    returnValue INTEGER := DBMS_PIPE.REMOVE_PIPE(&amp;quot;PLSQL$MESSAGE_INBOX&amp;quot;);&lt;br /&gt;
  5&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7&lt;br /&gt;
  8   NULL;&lt;br /&gt;
  9&lt;br /&gt;
 10  END;&lt;br /&gt;
 11  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; &lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2&lt;br /&gt;
  3  &lt;br /&gt;
  4    message_pipe VARCHAR2(30) := &amp;quot;PLSQL$MESSAGE_INBOX&amp;quot;;&lt;br /&gt;
  5    message_size INTEGER      := 20000;&lt;br /&gt;
  6    message_flag BOOLEAN      := FALSE;&lt;br /&gt;
  7&lt;br /&gt;
  8  &lt;br /&gt;
  9    returnValue INTEGER;&lt;br /&gt;
 10&lt;br /&gt;
 11  BEGIN&lt;br /&gt;
 12&lt;br /&gt;
 13  &lt;br /&gt;
 14    returnValue := DBMS_PIPE.CREATE_PIPE(message_pipe,message_size,message_flag);&lt;br /&gt;
 15&lt;br /&gt;
 16  &lt;br /&gt;
 17    IF (returnValue = 0) THEN&lt;br /&gt;
 18      DBMS_OUTPUT.PUT_LINE(&amp;quot;MESSAGE_INBOX pipe is created.&amp;quot;);&lt;br /&gt;
 19    END IF;&lt;br /&gt;
 20&lt;br /&gt;
 21  EXCEPTION&lt;br /&gt;
 22&lt;br /&gt;
 23  &lt;br /&gt;
 24    WHEN others THEN&lt;br /&gt;
 25      DBMS_OUTPUT.PUT_LINE(SQLERRM);&lt;br /&gt;
 26      RETURN;&lt;br /&gt;
 27&lt;br /&gt;
 28  END;&lt;br /&gt;
 29  /&lt;br /&gt;
ORA-23322: Privilege error accessing pipe&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==This script unpacks the local buffer.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set serveroutput on size 1000000&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2&lt;br /&gt;
  3    message VARCHAR2(30 CHAR) := NULL;&lt;br /&gt;
  4    success INTEGER;&lt;br /&gt;
  5&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7&lt;br /&gt;
  8    success := DBMS_PIPE.RECEIVE_MESSAGE(&amp;quot;ORA$PIPE$00F3B7B50001&amp;quot;,1);&lt;br /&gt;
  9&lt;br /&gt;
 10    IF (success = 0) THEN&lt;br /&gt;
 11      DBMS_PIPE.UNPACK_MESSAGE(message);&lt;br /&gt;
 12    ELSE&lt;br /&gt;
 13      DBMS_OUTPUT.PUT_LINE(&amp;quot;Error&amp;quot;);&lt;br /&gt;
 14      message := TO_CHAR(success);&lt;br /&gt;
 15    END IF;&lt;br /&gt;
 16&lt;br /&gt;
 17    DBMS_OUTPUT.PUT_LINE(&amp;quot;Message [&amp;quot;||message||&amp;quot;]&amp;quot;);&lt;br /&gt;
 18&lt;br /&gt;
 19  END;&lt;br /&gt;
 20  /&lt;br /&gt;
Error&lt;br /&gt;
Message [1]&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use DBMS_PIPE package to receive a message.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
set serveroutput on&lt;br /&gt;
DECLARE&lt;br /&gt;
  v_PipeName VARCHAR2(30) := &amp;quot;MyPipe&amp;quot;;&lt;br /&gt;
  v_Status INTEGER;&lt;br /&gt;
  v_DateVal DATE;&lt;br /&gt;
  v_NumberVal NUMBER;&lt;br /&gt;
  v_StringVal VARCHAR2(100);&lt;br /&gt;
BEGIN&lt;br /&gt;
  v_Status := DBMS_PIPE.RECEIVE_MESSAGE(v_PipeName);&lt;br /&gt;
  IF v_Status != 0 THEN&lt;br /&gt;
    DBMS_OUTPUT.PUT_LINE(&amp;quot;Error &amp;quot; || v_Status || &lt;br /&gt;
                         &amp;quot; while receiving message&amp;quot;);&lt;br /&gt;
  END IF;&lt;br /&gt;
  &lt;br /&gt;
  DBMS_PIPE.UNPACK_MESSAGE(v_DateVal);&lt;br /&gt;
  DBMS_PIPE.UNPACK_MESSAGE(v_NumberVal);&lt;br /&gt;
  DBMS_PIPE.UNPACK_MESSAGE(v_StringVal);&lt;br /&gt;
  &lt;br /&gt;
  DBMS_OUTPUT.PUT_LINE(&amp;quot;Unpacked &amp;quot; || v_DateVal);&lt;br /&gt;
  DBMS_OUTPUT.PUT_LINE(&amp;quot;Unpacked &amp;quot; || v_NumberVal);&lt;br /&gt;
  DBMS_OUTPUT.PUT_LINE(&amp;quot;Unpacked &amp;quot; || v_StringVal);&lt;br /&gt;
END;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use DBMS_PIPE package to send a message.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
DECLARE&lt;br /&gt;
  v_PipeName VARCHAR2(30) := &amp;quot;MyPipe&amp;quot;;&lt;br /&gt;
  v_Status INTEGER;&lt;br /&gt;
BEGIN&lt;br /&gt;
  DBMS_PIPE.PACK_MESSAGE(SYSDATE);&lt;br /&gt;
  DBMS_PIPE.PACK_MESSAGE(123456);&lt;br /&gt;
  DBMS_PIPE.PACK_MESSAGE(&amp;quot;This is a message sent from the pipe!&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  v_Status := DBMS_PIPE.SEND_MESSAGE(v_PipeName);&lt;br /&gt;
  IF v_Status != 0 THEN&lt;br /&gt;
    DBMS_OUTPUT.PUT_LINE(&amp;quot;Error &amp;quot; || v_Status || &lt;br /&gt;
                         &amp;quot; while sending message&amp;quot;);&lt;br /&gt;
  END IF;&lt;br /&gt;
END;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use DBMS_PIPE.PACK_MESSAGE in a trigger==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
CREATE TABLE myStudent (&lt;br /&gt;
  student_id NUMBER(5) NOT NULL,&lt;br /&gt;
  department CHAR(3)   NOT NULL,&lt;br /&gt;
  course     NUMBER(3) NOT NULL,&lt;br /&gt;
  grade      CHAR(1)&lt;br /&gt;
  );&lt;br /&gt;
CREATE OR REPLACE TRIGGER LogRSInserts&lt;br /&gt;
  BEFORE INSERT ON myStudent&lt;br /&gt;
  FOR EACH ROW&lt;br /&gt;
DECLARE&lt;br /&gt;
  v_Status     INTEGER;&lt;br /&gt;
BEGIN&lt;br /&gt;
  DBMS_PIPE.PACK_MESSAGE(&amp;quot;I&amp;quot;);&lt;br /&gt;
  DBMS_PIPE.PACK_MESSAGE(user);&lt;br /&gt;
  DBMS_PIPE.PACK_MESSAGE(sysdate);&lt;br /&gt;
  DBMS_PIPE.PACK_MESSAGE(:new.student_ID);&lt;br /&gt;
  DBMS_PIPE.PACK_MESSAGE(:new.department);&lt;br /&gt;
  DBMS_PIPE.PACK_MESSAGE(:new.course);&lt;br /&gt;
  DBMS_PIPE.PACK_MESSAGE(:new.grade);&lt;br /&gt;
  v_Status := DBMS_PIPE.SEND_MESSAGE(&amp;quot;RSInserts&amp;quot;);&lt;br /&gt;
  IF v_Status != 0 THEN&lt;br /&gt;
    RAISE_APPLICATION_ERROR(-20010, &amp;quot;LogRSInserts trigger &amp;quot; || &amp;quot;couldn&amp;quot;&amp;quot;t send the message, status = &amp;quot; || v_Status);&lt;br /&gt;
  END IF;&lt;br /&gt;
  &lt;br /&gt;
END LogRSInserts;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
INSERT INTO myStudent (student_id, department, course, grade)&lt;br /&gt;
                         VALUES (10000, &amp;quot;CS&amp;quot;, 102, &amp;quot;A&amp;quot;);&lt;br /&gt;
INSERT INTO myStudent (student_id, department, course, grade)&lt;br /&gt;
                         VALUES (10002, &amp;quot;CS&amp;quot;, 102, &amp;quot;B&amp;quot;);&lt;br /&gt;
INSERT INTO myStudent (student_id, department, course, grade)&lt;br /&gt;
                         VALUES (10003, &amp;quot;CS&amp;quot;, 102, &amp;quot;C&amp;quot;);&lt;br /&gt;
INSERT INTO myStudent (student_id, department, course, grade)&lt;br /&gt;
                         VALUES (10000, &amp;quot;HIS&amp;quot;, 101, &amp;quot;A&amp;quot;);&lt;br /&gt;
INSERT INTO myStudent (student_id, department, course, grade)&lt;br /&gt;
                         VALUES (10001, &amp;quot;HIS&amp;quot;, 101, &amp;quot;B&amp;quot;);&lt;br /&gt;
drop table myStudent;&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>