Well, your DBD::Oracle was compiled with OCI7, so you must recompile. If you are retrieving values from Oracle 7* db, then you'll have to use blob_read function, to fetch in chunks, since the support for LongReadLen is only available with OCI8 compiled DBDs.
Ilya > -----Original Message----- > From: Tina Mancuso [mailto:[EMAIL PROTECTED]] > Sent: Monday, June 03, 2002 2:52 PM > To: [EMAIL PROTECTED] > Subject: Truncated LONG values from Oracle > > > [I posted this to perl.dbi.users using Google a couple days > ago, but so far I have yet to see it appear on > nntp.perl.org/group/perl.dbi.users. So please forgive me if > you've already seen it...still desperately seeking an answer.] > > I hope someone can help me; I've been all over the 'net in an > effort to solve this. I've tried every documented method I > could find with no success. > > I am trying to fetch a column with datatype LONG using DBI > version 1.23, Oracle DBD version 1.12, Oracle client v8.1.7, > and Oracle server 7.3.4. I know that the value inserted into > the column is intact, about 500 bytes, because I can select > it using SQL*Plus, but every time I try to fetch the column > with DBI, it gets truncated to 80 characters. > > I have tried various large and small values for LongReadLen > with the same result. I also tried setting LongReadLen as an > attribute of the database handle rather than the statement > handle, also with the same result. When I try to eliminate > the "LongTruncOk" attribute or set it to 0, I get an error > 1406 (DBD ERROR: ORA-01406 error on field 2 of 2, ora_type 8, > LongReadLen too small and/or LongTruncOk not set). It seems > as if it's ignoring my LongReadLen value and setting it to 80 > regardless of what I put there. > > I even tried using blob_read in a loop, but when I do that, I > get an error to the effect of "blob_read is not supported in > this version, try setting LongReadLen instead". > > Here is my code snippet: > > $dbh->{RaiseError} = 1; > > # The actual query is in a package. > my $sth = $Profile::DB::get_cust_profile; > > $sth->{LongReadLen} = 2147483647; # max length of LONG column > $sth->{LongTruncOk} = 1; > > $sth->execute($login); > ($seq, $profile) = $sth->fetchrow_array; > > And, here's the output of a level-2 trace. In the above > code, line 46 is the $sth->execute. > > DBI 1.22-nothread dispatch trace level set to 2 > Note: perl is running without the recommended perl -w option > -> STORE for DBD::Oracle::db > (DBI::db=HASH(0x81ec844)~INNER 'RaiseError' 1) > <- STORE= 1 at prof_data line 36 > -> STORE for DBD::Oracle::st > (DBI::st=HASH(0x8383000)~INNER 'LongTruncOk' 1) > <- STORE= 1 at prof_data line 39 > -> STORE for DBD::Oracle::st > (DBI::st=HASH(0x8383000)~INNER 'LongReadLen' 50000) > <- STORE= 1 at prof_data line 40 > -> execute for DBD::Oracle::st (DBI::st=HASH(0x8382fb8)~0x8383000 > 'spltina') > bind :p1 <== 'spltina' (type 0) > bind :p1 <== 'spltina' (size 7/8/0, ptype 4, otype 1) > dbd_st_execute SELECT (out0, lob0)... > dbd_st_execute SELECT returned (SUCCESS, rpc0, fn4, out0) > !! ERROR: 24345 'ORA-24345: A Truncation or null fetch > error occurred (DBD SUCCESS_WITH_INFO: OCIStmtExecute)' > <- execute= '0E0' at prof_data line 46 > -> fetchrow_array for DBD::Oracle::st > (DBI::st=HASH(0x8382fb8)~0x8383000) > <- fetchrow_array= ( '1' > 'BQQRD0NvbnRyYWN0dWFsRGF0YQMAAAAGBBEKUHJlZmVyZW5jZQMAAAADCgh0Z > WFtL05ITAAAAAhjYXRl' > ) [2 it > ems] row1 at prof_data line 47 > -> errstr in DBD::_::common for DBD::Oracle::st > (DBI::st=HASH(0x8382fb8)~0x8383000) > <- errstr= undef at prof_data line 50 > > > And here is the output of perl -V: > > Summary of my perl5 (revision 5.0 version 6 subversion 0) > configuration: > Platform: > osname=linux, osvers=2.2.17-8smp, archname=i386-linux > uname='linux porky.devel.redhat.com 2.2.17-8smp #1 smp > fri nov 17 16:12:17 est 2000 i686 unknown ' > config_args='-des -Doptimize=-O2 -march=i386 -mcpu=i686 > -Dcc=gcc -Dcccdlflags=-fPIC -Dinstallprefix=/usr > -Dprefix=/usr -Darchname=i386-linux -Dd_dosuid > -Dd_semctl_semun -Di_db -Di_ndbm -Di_gdbm -Di_shadow > -Di_syslog -Dman3ext=3pm -Uuselargefiles' > hint=recommended, useposix=true, d_sigaction=define > usethreads=undef use5005threads=undef useithreads=undef > usemultiplicity=undef > useperlio=undef d_sfio=undef uselargefiles=undef > use64bitint=undef use64bitall=undef uselongdouble=undef > usesocks=undef > Compiler: > cc='gcc', optimize='-O2 -march=i386 -mcpu=i686', > gccversion=2.96 20000731 (Red Hat Linux 7.1 2.96-79) > cppflags='-fno-strict-aliasing' > ccflags ='-fno-strict-aliasing' > stdchar='char', d_stdstdio=define, usevfork=false > intsize=4, longsize=4, ptrsize=4, doublesize=8 > d_longlong=define, longlongsize=8, d_longdbl=define, > longdblsize=12 > ivtype='long', ivsize=4, nvtype='double', nvsize=8, > Off_t='off_t', lseeksize=4 > alignbytes=4, usemymalloc=n, prototype=define > Linker and Libraries: > ld='gcc', ldflags =' -L/usr/local/lib' > libpth=/usr/local/lib /lib /usr/lib > libs=-lnsl -ldl -lm -lc -lcrypt > libc=/lib/libc-2.2.2.so, so=so, useshrplib=false, > libperl=libperl.a > Dynamic Linking: > dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, > ccdlflags='-rdynamic' > cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib' > > > Characteristics of this binary (from libperl): > Compile-time options: > Built under linux > Compiled at Mar 23 2001 12:49:50 > @INC: > /usr/lib/perl5/5.6.0/i386-linux > /usr/lib/perl5/5.6.0 > /usr/lib/perl5/site_perl/5.6.0/i386-linux > /usr/lib/perl5/site_perl/5.6.0 > /usr/lib/perl5/site_perl > > Thanks, > > --Tina > > ===== > [EMAIL PROTECTED], [EMAIL PROTECTED] http://www.monster-island.org __________________________________________________ Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World Cup http://fifaworldcup.yahoo.com
