Re: Help: Oracle Database Pipes

From: David Trahan <dtrahan_at_tyler.ultranet.com>
Date: 1995/06/06
Message-ID: <3r1ien$nve_at_caesar.ultra.net>#1/1


byron_at_sfsu.edu () wrote:

>Hi All,
 

>According to the documentation (if you believe in that stuff), Oracle
>Pipes is supposed to have a listener piece one end of the pipe. Has
>anyone written such a thing? If so, would you be able to share what
>you have written (even a skeleton would be useful). It appears to be
>a socket application but it is not clear how to implement such a
>thing. When I called Oracle to get a sample, the response was LOUD
>LAUGHTER on the other end!!!
 

>I guess Oracle might even have tested one of these things before. :-)
 

>Any help or pointers would be useful. Thanks in advance.
 

>Byron
>byron_at_sfsu.edu
>San Francisco State University

Byron -

        We use DBMS pipes in a commercial application, so I can't give you code samples, but I can tell you that it's not too difficult.

The basic flow goes something like this:

  • Parse the SQL that calls the DBMS_PIPE.RECEIVE_MESSAGE stored function: BEGIN RETVAL:=DBMS_PIPE.RECEIVE_MESSAGE('pipename',60); END; In this case the name of the pipe to listen to is "pipename" and the timeout value for the "read" is 60 seconds. You can get a unique pipename through DBMS_PIPE.UNIQUE_SESSION_NAME
  • Bind an integer to the RETVAL variable in the SQL statement
  • Execute the statement and check for return errors
  • Check the value of RETVAL for pipe errors or timeout
  • Parse the SQL that calls the DBMS_PIPE.UNPACK_MESSAGE stored procedure which actually transfers data from the just-read message to your variable. You need to get the data type right! BEGIN RETVAL := DBMS_PIPE.UNPACK_MESSAGE(:OUTDATA); END;
  • Bind the appropriate value to :OUTDATA
  • Execute the statement and check for errors
  • Check the value of RETVAL for unpack errors

                Dave
Dave Trahan
dtrahan_at_ultranet.com Received on Tue Jun 06 1995 - 00:00:00 CEST

Original text of this message