Re: put_line: any way to have nonbuffered output?

From: Mark D Powell <Mark.Powell2_at_hp.com>
Date: Thu, 6 Oct 2011 07:06:56 -0700 (PDT)
Message-ID: <e6f7a772-fc12-4ad3-8383-19a3db3a87d6_at_k10g2000vbn.googlegroups.com>



On Oct 6, 2:26 am, geos <g..._at_nowhere.invalid> wrote:
> Gerard H. Pille wrote:
> >> session 1:http://geos2005.republika.pl/sesja1.sql
> >> session 2:http://geos2005.republika.pl/sesja2.sql
>
> >> pl/sql (2) can "communicate" with pl/sql (1) but the latter one can't
> >> display until it is finished.
>
> > The reading side of dbms_pipe should be handled by a PRO*C or Java
> > program, and spool output immediately.
>
> do I understand right, that Pro*C means running the compiled output as
> system program, not "inside" sqlplus as it is with anonymous block, and
> to display the messages appropriate Pro*C "display function" should be
> used?
>
> thank you,
> geos

The dbms_pipe package, which should generally not be used in a RAC environment, is a mean to pass data between two Oracle sessions. The first session packs the data into the pipe and the second session unpacks the data from the pipe. Depending on your version you can find information on this Oracle provided package in the PL/SQL Packages and Types manual or Supplied PL/SQL Packages and Types Reference.

If you used dbms_pipe instead of dbms_output a pro*C program could unpack the pipe concurrently to the first session filling the pipe and write out the output or insert it into a table independently of the first session transaction.

An alternate approach that work in a RAC environment would be to substitute a logging routine for dbms_output where the logging routine was written as an anonymous transaction; however, you would have to read the results from a separate session so neither of these approaches may be of any use if what you want is for the current session to see the dbms_output as it is generated on the current session screen.

HTH -- Mark D Powell -- Received on Thu Oct 06 2011 - 09:06:56 CDT

Original text of this message