2013-01-09 3 views
0

Je suis actuellement confronté à un problème où une longue chaîne récupérée à partir de la base de données avec la sélection ci-dessous est tronquée. Dans la déclaration ci-dessous, val1 est tronqué après 115 caractères lorsque je l'imprime dans la boucle while, mais dans la table, la chaîne contient 300 caractères.Perl DBI: Valeur de résultat coupée

Y a-t-il des paramètres de configuration de module Perl que je dois ajuster?

Merci!

my $sql = "SELECT val1 FROM TABLE"; 
my $sth = $dbh->prepare($sql) 
    or die "Can't prepare statement: $DBI::errstr"; 
$sth->execute() or die "Cannot execute: " . $sth->errstr(); 
$sth->{'LongTruncOk'} = 1; 
$sth->{'LongReadLen'} = 20000; 
while(my @row = $sth->fetchrow_array()) { 
    ... 
} 
+0

Quel DBD et quel est le type de champ? – ikegami

Répondre

5

Selon le DBI documentation, vous devez définir LongReadLen (et persumably LongTruncOk) avant la préparation.

Modification de la valeur de « LongReadLen » pour une poignée de déclaration après qu'il a été « préparer » 'd aura généralement pas d'effet, il est donc commun de mettre « LongReadLen » sur le dbh $ avant d'appeler « préparer ».