Denis BUCHER wrote:
> Hello everyone,
>
> Some precisions to my previous email...
>
>> I'm trying to simply do a SELECT from an ODBC source.
>> It works perfectly in PHP but not in perl !
>> Therefore there is no problem at source or at ODBC level, it seems to
>> reside at perl/DBI level...
>>
>> What I do :
>>> use DBI;
>>> $dbh = DBI->connect('dbi:ODBC:' . $dsnname, $dbuser, $dbpwd) or...
>>> $sth = $dbh->prepare($sql) or die...
>>> $sth->execute 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});
>>
>> But even if my script is working, most of the time (not always but 80%
>> of time ???) I get this error :
>>
>> 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.
>
> I must add an important point, I received 47 rows out of the 126 expected
>
>> I'm not an ODBC expert, not a DBI expert, therefore I'm maybe forgetting
>> something important to be done, but I don't find anything on the web
>> that helped me...
>>
>> Last idea, could it be due to UTF8, which would create difference in
>> string sizes ?
>>
>> I found a similar bug in PHP :
>> http://www-01.ibm.com/support/docview.wss?uid=nas1ac5658703ae5a78b862575440052cbda
>>
>> And a thread about my problem but without solution :
>> http://www.ibm.com/developerworks/forums/thread.jspa?threadID=185874&tstart=45
>>
>> But I don't understand DBI enough to understand what I should do ?
>>
>> Thanks a lot for any help !
>
> Denis
>
>
Take a look at the DBI attribute LongReadLen.
Martin
--
Martin J. Evans
Easysoft Limited
http://www.easysoft.com