| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.misc -> Problem with OCI on Oracle 8.1.5 with binding PL/SQL cursors to a OCIStmt handle
Hi,
I have a problem with OCI on Oracle 8.1.5 (on SUN Solaris platform). When binding a PL/SQL cursor to a statement I get:
"ORA-03106: fatal two-task communication protocol error"
My code is like this:
_myenvhp, _myerrhp, _mysvchp are allocated and initialized correctly elsewhere in the code.
string sql = "begin open :refcur for select id from test order by id; end;";
OCIStmt* sqlstmt=0;
OCIStmt* cursorstmt=0;
OCIBind* curbind=0;
checkError(OCIHandleAlloc((dvoid *)_myenvhp,
(dvoid **)&sqlstmt,
(ub4) OCI_HTYPE_STMT, (size_t)0, (dvoid **)0),
"Unable to alloc statement handle for plsql fetch",PIIEXCSQL);
checkError(OCIHandleAlloc((dvoid *)_myenvhp,
(dvoid **)&cursorstmt,
(ub4) OCI_HTYPE_STMT, (size_t)0, (dvoid **)0),
"Unable to alloc statement handle for plsql fetch",PIIEXCSQL);
checkError(OCIStmtPrepare(sqlstmt, _myerrhp, (text*)sql.c_str(),
sql.size(),
OCI_NTV_SYNTAX, OCI_DEFAULT),
"Unable to prepare statement", PIIEXCSQL);
checkError(OCIBindByName(sqlstmt, (OCIBind**)&curbind, _myerrhp,
(text*) ":refcur", (sb4)strlen(":refcur"),
(dvoid*)&cursorstmt,
(sb4)0, SQLT_RSET, (dvoid*)0, (ub2*)0,
(ub2*)0, (ub4)0, (ub4*)0, OCI_DEFAULT),
"Bind variable cursor failed", PIIEXCSQL);
sword ociret=0;
ociret = OCIStmtExecute(_mysvchp, sqlstmt, _myerrhp, 1, 0,
(OCISnapshot *) NULL, (OCISnapshot *) NULL,
(ub4) OCI_DEFAULT);
>>>> Even before getting to fetching from statement handle 2 I get the "ORA
03196"!!!! The error comes aftyer the above execute!!
Any ideas? What do I do wrong (or does OCI not work proberly). I copied the
exampel right of the text book Oracle Call Interface volume release 8.1.5
volume 1 page 5-30.
All other things works fine (tested array fetch, normal execute of PL/SQL
block, etc.).
Regards, Kræn Received on Fri Feb 04 2000 - 02:54:24 CST
![]() |
![]() |