On Saturday, July 12, 2003, at 03:43 PM, Hilmar Lapp wrote:


If I do supply the LOB type and column as suggested in the POD, as in

$sth->bind_param($index, $value, { ora_type => ORA_CLOB, ora_field => 'SEQ' });

then I receive an

ORA-04043: object biosequence does not exist (DBD SUCCESS: OCIDescribeAny(view)/LOB refetch)

biosequence is a (non-public) synonym to the table that contains the LOB column. The real table is under a different user and also has a different name.

Just as an add-on, I've checked the above call without the NVL() wrap around the parameter (i.e., '..., SEQ = ?, ...' instead of '..., SEQ = NVL(?,SEQ), ...') and then it works just fine (BTW then it also works without the parameters in the hash ref).


I also tried against the real table (instead of the synonym to it) and then even wrapping the parameter in NVL() works just fine (!).

So wrapping the parameter in NVL() *and* issuing the statement against an object that is only a synonym and not the real table makes the whole difference. Apparently then a OCIDescribeAny(view) (whatever that means ...) is triggered, which fails. I'd just be curious whether it is the OCI libs which do this without DBD::Oracle being in control, or whether it is DBD::Oracle, and/or whether DBD::Oracle could have some way of working around it.

I'm afraid if there is a fix it's not going to be an easy one and hence I'll have to work around it myself in the meantime somehow ...

-hilmar

BTW in case anyone is curious or would like to see the code, the OR mapper I was talking about is bioperl-db (the persistence layer for Bioperl, http://www.bioperl.org) and the schema is BioSQL (http://obda.open-bio.org). Both are available from CVS.

--
-------------------------------------------------------------
Hilmar Lapp                            email: lapp at gnf.org
GNF, San Diego, Ca. 92121              phone: +1-858-812-1757
-------------------------------------------------------------



Reply via email to