- 论坛徽章:
- 0
|
查询一条语句后,想更新此语句中的field ,于是想获取语句句柄中的rowid ,根据rowid 更新 field
我的步骤是:
step 1: 分配rowid描述符
status=OCIDescriptorAlloc ((dvoid *) m_env,
(dvoid **) &rowid,
(ub4) OCI_DTYPE_ROWID,
(size_t) 0,
(dvoid **) 0);
cout<<"rowid allocat stat:"<<status<<endl; //此处返回0 ,正常
step 2: 执行fetch语句之后
status=OCIAttrGet(m_stmt,
OCI_HTYPE_STMT,
(dvoid*) rowid,
(ub4 *) &rowid_len,
OCI_ATTR_ROWID,
(OCIError *) m_error);
cout<<"get rowid status:" <<status<<endl; //此处返回 100 ,用ocierroget读取出错缓冲区, 出错消息为空
step 3: rowid 转换成 char
status=OCIRowidToChar (rowid,(OraText *)rowid_str,&rowid_len, m_error );
//程序运行到此处崩溃,Segmentation Fault(coredump)
其他代码省略,
请教: 1. step2,step3 中 rowid 的长度rowid_len 要怎么设置呢,尝试设置一些数字都不行?
2. 要获取rowid 是否还有其他方面要设置?
望指教!!! |
|