Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème DBI (source ODBC)

2 réponses
Avatar
magix
Bonjour,

Hello,

J'ai un probl=E8me pour faire un SELECT sur une source ODBC, =E7a
fonctionne parfaitement en PHP mais pas en perl ?

Voici mon script (=E0 peu pr=E8s) :

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

Mais voil=E0 je re=E7ois 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=E9 un probl=E8me similaire en PHP :
http://www-01.ibm.com/support/docview.wss?uid=3Dnas1ac5658703ae5a78b862...

Et je ne suis pas le seul =E0 avoir eu ce probl=E8me :
http://www.ibm.com/developerworks/forums/thread.jspa?threadID=3D185874&...

Toute aide sera la bienvenue !!!

Denis

2 réponses

Avatar
magix
On 3 août, 17:17, magix wrote:
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
Avatar
Jogo
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 --