+ -
当前位置:首页 → 问答吧 → 有用过OCITransStart()的吗?

有用过OCITransStart()的吗?

时间:2011-10-28

来源:互联网

直接试了OCI文档里的例子,

XID gxid;

gxid.formatID = 1000; /* format id = 1000 */
gxid.gtrid_length = 3; /* gtrid = 123 */
gxid.data[0] = 1; gxid.data[1] = 2; gxid.data[2] = 3;
gxid.bqual_length = 1; /* bqual = 1 */
gxid.data[3] = 1;

retCode = OCIAttrSet((dvoid *)txnhp1, OCI_HTYPE_TRANS, (dvoid *)&gxid, sizeof(XID), OCI_ATTR_XID, errhp);

retCode = OCITransStart(svchp, errhp, 60, OCI_TRANS_NEW);

OCITransStart failed.
mgs: ORA-00162: external dbid length 0 is greater than maximum (16)
. code: 162.

有人知道哪错了吗? 其它的操作都能正常工作,就是开启事务这报错.

作者: yythinking   发布时间: 2011-10-28

你传入的DB的名字在哪里?
DB名字是什么?

看这句话的翻译是:
外面的DB长度,比最大值16要大。

作者: yixilan   发布时间: 2011-10-28

传入的名字应该不会超长,因为OCITransStart()之前之后的OCI函数都能正常工作,象OCITransStart()之后的prepare()/execute()都能工作,数据库里数据都能修改.就是OCITransStart()报错.

mgs: ORA-00162: external dbid length 0 is greater than maximum (16). code: 162.
这里长度0不知道哪来的,如果长了也应该是大于16呀?

作者: yythinking   发布时间: 2011-10-28