[Zope-dev] ZOracle LOB Questions
Matthew T. Kromer
matt@digicool.com
Mon, 31 Jul 2000 11:26:03 -0400
Alexander Schad wrote:
>
> Hello!
>
> i have Oracle 8.1.6 ZOracleDA 2.2 installed with Zope 2.1.6 on a red hat
> linux machine.
>
> i have an oracle table with one column containing blobs. Now i have
> the following problems:
>
> 1. How can i retrieve data from that table in zope or in python (syntax) ?
>
> 2. How can i insert data to that table ?
> i need the zope syntax something like:
> insert into blob_table values ('<dtml-var image>') ???
> or the python syntax
>
> i have written a little script:
>
> import DCOracle, sys, os, DCOracle.dbi
>
> dbc = DCOracle.Connect('mozdb_dba/mozdb_dba')
> cur = dbc.cursor()
> fn = open('test_img.jpg','rb')
> data = fn.read()
> fn.close()
> param = DCOracle.dbi.dbiRaw(data)
> cur.execute('select blobcol from blobtable')
> dat = cur.fetchone()
> cur.close()
> dbc.close()
> print dat
>
> when i try to execute it i get the following error:
>
> Traceback (innermost last):
> File "blobtest.py", line 12, in ?
> dat = cur.fetchone()
> File "DCOracle/ociCurs.py", line 339, in fetchone
> self._error()
> File "DCOracle/ociCurs.py", line 109, in _error
> raise error, (rc, oci_.OracleErrorMessage(self._c.lda, rc))
> oci.error: (24813, 'ORA-24813: cannot send or receive an unsupported
> LOB\012')
>
> 3. Is there a way to call a stored procedure or function that actually
> return values ?
> i succeeded in retrieving one particular value out of a table but when
> i try a function like :
> select * from some_table
> i fail...
>
> 4. Changes.txt:
>
> Z Oracle DA Releases
>
> 2.2.0
>
> Added a small feature that allows you to access LOBs in the Oracle
> database. To do this, you must have your maximum number of
> results set to '1'. Otherwise, it won't work.
>
> i don't know what this is referring to. where should i make this change?
>
> Ciao,
> Alex
>
Alex, Oracle 8i broke DCOracle's support for LOBs; DCOracle primarily
uses OCI 7 (Oracle 7) calls, and Oracle 8i enforces a restriction that
OCI 8 objects cannot be used in the context of an OCI 7 statement.
You can use Oracle 8.0 for this, the restriction isn't enforced until
Oracle 8.1.