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.