Ronny Riedel: mehr als 407 Zeichen mit "$x->func('dbms_output_get');" lesen

Beitrag lesen

Hallo zusammen,

gegeben sei folgendes PERL-Skript:

#!/usr/bin/perl  
  
use strict;  
use DBI;  
  
# die Umgebungsvariable "ORACLE\_HOME" muss gesetzt werden  
$ENV{ORACLE\_HOME} = '/path/to/oracle/10.2.0';  
  
# DB-Verbindung oeffnen und initialisieren  
my $dbh = DBI->connect("dbi:Oracle:[db]", '[user]', '[pw]');  
$dbh->{RaiseError} = 1;  
$dbh->func(1000000, 'dbms\_output\_enable');  
  
# PL/SQL-Prozedur der DB aufrufen  
my $csr = $dbh->prepare(q{  
             BEGIN  
                FOR i IN 1 .. 407 LOOP  
                   dbms\_output.put('a');  
                END LOOP;  
                --  
                dbms\_output.new\_line;  
             END;  
          });  
$csr->execute;  
  
# alle Daten aus dem Puffer von "dbms\_output" holen  
my @ausgaben = $dbh->func( 'dbms\_output\_get' );  
  
# diese Daten in eine Datei schreiben  
foreach my $ausgabe (@ausgaben) {  
   print $ausgabe;  
   print "\n";  
}  
  
# DB-Verbindung schliessen  
$dbh->disconnect;  
~~~~~~~~~~~~~~~~~~~~~~~~~~~ snap ~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  
Wenn ich das Skript aufrufe, dann erhalte ich 407 mal "a" als ein langer String. Wenn ich jetzt allerdings aus der 407 eine 408 mache, dann erhalte ich gar nichts.  
  
Kann mir bitte jemand erklären, warum das so ist?  
  
Danke & Gruß  
  Ronny R.