Hallo
Ich habe ein Problem mit DBD::ORACLE::ora_lob_read() und zwar genau in der Art wie im CPAN Artikel angegeben:
Quote$sth = $dbh->prepare( <<" SQL", { ora_auto_lob => 0 } );
SELECT chardata
FROM lob_example
WHERE lob_id = ?
SQL
$sth->execute( $lob_id );
my ( $char_locator ) = $sth->fetchrow_array();
my $chunk_size = 1034; # Arbitrary chunk size, for example
my $offset = 1; # Offsets start at 1, not 0
while(1) {
my $data = $dbh->ora_lob_read( $char_locator, $offset, $chunk_size );
last unless length $data;
print STDOUT $data;
$offset += $chunk_size;
}
Jetzt habe ich Zeilen in der DB. Mache einige Hundert MB groß. Andere nur einige KB..
Wenn ich mir jetzt eine Zeile geben lasse die nur en paar KB hat, dann wird nach dem ersten ora_lob_read() sofort etwa 100 MB Speicher belegt.
Allerdings: NICHT MEHR FREIGEGEBEN.
Selbst wenn ich im spätern Skript-Verlauf ein Disconnect und neues Connect auf die DB ausführe...
Was kann ich machen?
Viele Grüße
a'olio^^