Problème DBI (source ODBC)

Le
magix
Bonjour,

Hello,

J'ai un problème pour faire un SELECT sur une source ODBC, ça
fonctionne parfaitement en PHP mais pas en perl ?

Voici mon script (à peu près) :

> use DBI;
> $dbh = DBI->connect('dbi:ODBC:' . $dsnname, $dbuser, $dbpwd) or
> $sth = $dbh->prepare($sql) or die
> do {
> my @row;
> my $line=1;
> # fetch each row in array
> while (@row = $sth->fetchrow_array())
> {
> print ($line + 1);
> print ". ";
> # print each field in a row
> for ($i=0;$i<$#row;$i++)
> {
> print $row[$i]
> };
> print "";
> $line++;
> }
> # see if there's more records to show
> } while ($sth->{odbc_more_results});

Mais voilà je reçois ce message d'erreur :

DBD::ODBC::st fetchrow_array failed: [unixODBC][IBM][System i Access
ODBC Driver]Column 1: CWB0111 - A buffer passed to a system call is
too
small to hold return data (SQL-22018) [state was 22018 now 01004]

[unixODBC][IBM][System i Access ODBC Driver]String data right
truncation. (SQL-01004) at ./odbcdemo-perl.pl line n.

Je ne suis expert ni en ODBC ni en DBI, alors si qqn pouvait m'aider ?

J'ai trouvé un problème similaire en PHP :
http://www-01.ibm.com/support/docview.wss?uid=nas1ac5658703ae5a78b862

Et je ne suis pas le seul à avoir eu ce problème :
http://www.ibm.com/developerworks/forums/thread.jspa?threadID=185874&

Toute aide sera la bienvenue !!!

Denis
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
magix
Le #19877441
On 3 août, 17:17, magix
Bonjour,

Hello,

J'ai un problème pour faire un SELECT sur une source ODBC, ça
fonctionne parfaitement en PHP mais pas en perl ?

Voici mon script (à peu près) :



> use DBI;
> $dbh = DBI->connect('dbi:ODBC:' . $dsnname, $dbuser, $dbpwd) or...
> $sth = $dbh->prepare($sql) or die...
> do {
>         my @row;
>         my $line=1;
>         # fetch each row in array
>         while (@row = $sth->fetchrow_array())
>         {
>                 print ($line + 1);
>                 print ". ";
>                 # print each field in a row
>                 for ($i=0;$i<$#row;$i++)
>                 {
>                         print $row[$i]
>                 };
>                 print "n";
>                 $line++;
>         }
>         # see if there's more records to show
> } while ($sth->{odbc_more_results});

Mais voilà je reçois ce message d'erreur :

DBD::ODBC::st fetchrow_array failed: [unixODBC][IBM][System i Access
ODBC Driver]Column 1: CWB0111 - A buffer passed to a system call is
too
small to hold return data (SQL-22018) [state was 22018 now 01004]

[unixODBC][IBM][System i Access ODBC Driver]String data right
truncation. (SQL-01004) at ./odbcdemo-perl.pl line n.

Je ne suis expert ni en ODBC ni en DBI, alors si qqn pouvait m'aider ?

J'ai trouvé un problème similaire en PHP :http://www-01.ibm.com/suppo rt/docview.wss?uid=nas1ac5658703ae5a78b862...

Et je ne suis pas le seul à avoir eu ce problème :http://www.ibm.com/ developerworks/forums/thread.jspa?threadID5874&...

Toute aide sera la bienvenue !!!

Denis



Voici les liens complets :

http://www-01.ibm.com/support/docview.wss?uid=nas1ac5658703ae5a78b8625754 40052cbda

http://www.ibm.com/developerworks/forums/thread.jspa?threadID5874&tsta rtE
Jogo
Le #19880551
Sur fr.comp.lang.perl, magix disait :

$dbh = DBI->connect('dbi:ODBC:' . $dsnname, $dbuser, $dbpwd) or...
$sth = $dbh->prepare($sql) or die...
do {
my @row;
my $line=1;
# fetch each row in array
while (@row = $sth->fetchrow_array())





Où est le $sth->execute(...) ?

--
On ne sort pas du délire de technoïdes crypto-intellos qui s'imagi-
-naient pouvoir proposer une alternative dans la dictature des medias
à la solde du grand kapital ou de l'État. Y en a qui l'ont cru sincè-
-rement et d'autres qui ont fait en sorte de vérouiller le système au
plus vite. -- E7 dans fufe --
Publicité
Poster une réponse
Anonyme