OCI 批量处理BLOB locator问题。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

fengkewei fengkewei 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
bool update_blob(BLOBPIC **blobsub, OCILobLocator **blob)
{
text *update = (text *)"SELECT pic FROM blobpic WHERE pid = :1 FOR UPDATE";
OCIBind *bndhp1 = NULL;
OCIDefine *defhp1 = NULL;
sb4 status = 0;
bool ersign = 1;
BLOBPIC *tempid = NULL; //用来临时保存PID

//tempid = blobsub->pid;
//prepare to update

ersign = ersign & CheckErr(errhp, OCIStmtPrepare(stmthp, errhp, (oratext *)update, (sb4)strlen((char *)update), OCI_NTV_SYNTAX, OCI_DEFAULT));

ersign = ersign & CheckErr(errhp, OCIBindByPos(stmthp, &bndhp1, errhp, 1, blobsub[0]->pid,(sb4)sizeof(blobsub[0]->pid), SQLT_INT,&blobsub[0]->indic, &blobsub[0]->alen, &blobsub[0]->rcodep, MAXPICNUM, &blobsub[0]->curelp, OCI_DEFAULT));
OCIBindArrayOfStruct(bndhp1, errhp, sizeof(blobsub[0]->pid), sizeof(sb2), sizeof(ub2), sizeof(ub2), sizeof(ub2)); //批量处理

ersign = ersign & CheckErr(errhp, OCIDefineByPos(stmthp, &defhp1, errhp, 1, (void *)blob[0], (sb4)sizeof(blob[0]), SQLT_BLOB, 0, 0, 0, OCI_DEFAULT));
OCIDefineArrayOfStruct(defhp1, errhp, sizeof(blob),sizeof(sb2), sizeof(ub2), sizeof(ub2));

//update
status = OCIStmtExecute(svchp, stmthp, errhp, MAXPICNUM, 0, NULL, NULL, OCI_DEFAULT);

if(status && status != OCI_SUCCESS_WITH_INFO) //出错则返回
{
CheckErr(errhp, status);
OCIHandleFree((dvoid *)envhp, OCI_HTYPE_ENV);
return FALSE;
}

return ersign;
}


运行时出现"编译绑定长度不同于执行绑定长度"的错误代码
MAXPICNUM 为3
是不是哪儿的参数错了?

OCIBindByPos()的最后那几个指针是否必须为指针?数组可以么?alenp 与indp rcodep maxarr_len curelep 他们都必须要设置么?

谢谢!!
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
fengkewei
Oracle 17,133 成员 55,258 内容