When DBD::Oracle 1.06 fetches a LOB from Oracle that is longer than
LongReadLen and LongTruncOk is not set, it outputs an error message
similar to this one:

DBD::Oracle::st fetchrow_array failed: ERROR fetching field 3 of 2. LOB
value truncated from 199800 to 199800. DBI attribute LongReadLen too
small and/or Long\TruncOk not set at (file name here).

Note the nonsensical  "truncated from 199800 to 199800" - this is due to a
minor bug in oci8.c.  A patch is attached below.


- Paul

--- oci8-orig.c Mon Feb 19 14:58:51 2001
+++ oci8.c      Mon Feb 19 14:59:55 2001
@@ -551,7 +551,7 @@
        else {
            char buf[300];
            sprintf(buf,"fetching field %d of %d. LOB value truncated from %ld to %ld. 
%s",
-                   fbh->field_num+1, DBIc_NUM_FIELDS(imp_sth), ul_t(amtp), ul_t(amtp),
+                   fbh->field_num+1, DBIc_NUM_FIELDS(imp_sth), ul_t(loblen), 
+ul_t(amtp),
                    "DBI attribute LongReadLen too small and/or LongTruncOk not set");
            oci_error(sth, NULL, OCI_ERROR, buf);
            sv_setiv(DBIc_ERR(imp_sth), (IV)24345); /* appropriate ORA error number */



Reply via email to