[Zope-DB] Clob's in DCOracle2: works, but can't read

Bogdan M. Maryniuck b.maryniuk at forbis.lt
Mon Jul 19 11:26:29 EDT 2004


Hi again.
Please help me where I am wrong, using clob's as IN/OUT in
DCOracle2 stored procedures?

OK, here is the chunk of some source:
-------------------------------------------------
d = DCOracle2.connect( ... )
c = d.cursor()

clob = d.LobLocator('SQLT_CLOB')
clob.write(msg) # msg is an text
try:
    out = c.procedure.my_package.my_procedure(input_clob = clob, output_clob = '')
    print "SUCCESS"
except:
    out = None
    print "FAILURE"

print type(out)
print dir(out)
print out.length()
print out.read()
-------------------------------------------------

...and here is its output:
-------------------------------------------------
SUCCESS
<type 'LobLocator'>
['length', 'read', 'trim', 'write']
54380
Traceback (most recent call last):
  File "clobprocedure.py", line 34, in ?
    print out.read()
dco2.DatabaseError: (0, 'p^\x14\x08t\xef\xff\xbf\xd06\x03@\xd8\xbb\x0b\x08\xd06\x03@\xd8\xbb\x0b')
-------------------------------------------------

As far as I can see, there is "RaiseOCIError" called in dco2.c:
-------------------------------------------------
    if (_LobLocator_length(self, &loblength) != 0)
            return RaiseOCIError(self->errhp, OCI_HTYPE_ERROR);
-------------------------------------------------

And here is last lines from the tracelog:
-------------------------------------------------
* 1090244988.950, 161, OCIAttrGet, 0x08159898, OCI_HTYPE_STMT,
* 0xbffff008, OCI_ATTR_ROW_COUNT, *
* 1090244988.950, 162, OCIAttrGet, 0, 1, *
* 1090244988.950,  18, Cursor_execute, 8, *
* 1090244988.950,  17, Cursor_getattr, 0x0815a708, 0x0810fc3c ?=
* rowcount, *
* 1090244988.950,  18, Cursor_getattr, 0x0815a708, *
* 1090244988.951,  17, Cursor_rowcount, 0x0815a708, *
* 1090244988.951,  18, Cursor_rowcount, 0x080c0108, 1, *
* 1090244988.951,  17, Cursor_getattr, 0x0815a708, 0x080fbcbc ?=
* describe, *
* 1090244988.951,  18, Cursor_getattr, 0x0815a708, *
* 1090244988.951,  17, Cursor_describe, 0x0815a708, 0x080c2384, *
* 1090244988.951,  18, Cursor_describe, *
* 1090244988.951,  17, LobLocator_getattr, 0x08113860, 0x080ccabc ?=
* read, *
* 1090244988.951,  18, LobLocator_getattr, 0x080db900, *
* 1090244988.952,  17, LobLocator_read, 0x08113860, 0x080c2384, *
* 1090244988.952,  65, LobLocator_read, -1, 1, 0, 1, *
* 1090244988.952,  17, _LobLocator_length, 0x08113860, *
* 1090244988.952,  33, OCILobGetLength, 0x0813e2e4, *
* 1090244988.952,  34, OCILobGetLength, 0, *
* 1090244988.953,  66, _LobLocator_length, 299, *
* 1090244988.953,  18, _LobLocator_length, 0, *
* 1090244988.953,  33, OCILobRead, 0x0813e2e4, 299, 1, 0x080e5304, *
* 1090244988.954,  34, OCILobRd, 99, *

* 1090244988.954,  36, RaiseOCIError, 135324032, 0xbfffefa4 ?= ����t, *
                                      ^^^^^^^^^ exactly this number I got as an error!

* 1090244988.956,  17, Cursor_dealloc, 0x08156ea8, *
* 1090244988.956, 161, OCIHandleFree, OCI_HTYPE_STMT, 0x0815520c, *
* 1090244988.956, 162, OCIHandleFree, 0, *
* 1090244988.956, 161, OCIHandleFree, OCI_HTYPE_ERROR, 0x0815a1f4, *
* 1090244988.957, 162, OCIHandleFree, 0, *
* 1090244988.957,  18, Cursor_dealloc, *
-------------------------------------------------

Who can explain me what means "135324032" error and why it would not
like to read my clob?

RDBMS:    Oracle8i
OS:       Linux SuSE SLES
DCOracle: CVS snapshot *before* crisw

-- 
Regards, Bogdan M. Maryniuk
Developer. Forbis UAB


More information about the Zope-DB mailing list