Thread PL/SQL: mehr als 407 Zeichen mit "$x->func('dbms_output_get');" lesen (3 answers)
Opened by Ronny Riedel at 2011-04-16 00:23

Gast Ronny Riedel
 2011-04-16 00:23
#147793 #147793
Hallo zusammen,

gegeben sei folgendes PERL-Skript:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/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;


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.

PS: getestet unter:

>
> user@host1> perl -v
>
> This is perl, v5.10.0 built for x86_64-linux-thread-multi
>
> Copyright 1987-2007, Larry Wall
>

und unter

>
> user@host2{~} perl -v
>
> This is perl, v5.8.8 built for x86_64-linux-thread-multi
>
> Copyright 1987-2006, Larry Wall
>
Last edited: 2011-04-16 00:26:26 +0200 (CEST)

View full thread PL/SQL: mehr als 407 Zeichen mit "$x->func('dbms_output_get');" lesen