用于输出绑定变量的Oracle OCIBindByPos()

时间:2012-08-14 07:25:08

标签: c++ oracle oci

是否有关于如何使用OCI绑定变量的好文档?我在绑定 out bind 变量时遇到问题。 buf在存储过程中与“OUT”变量绑定。

问题1:我是否需要为buf预先分配内存?或OCI可以做到吗?

问题2:有没有办法告诉buf中存储的字符数是多少?或者只是将其视为以空值终止的C字符串?

int pos; 
char* buf; 
size_t len;
int rc = OCIBindByPos( Stmt, &bind, errhp, pos, buf, len, SQLT_STR,
                       NULL, NULL, NULL, 0, NULL, OCI_DEFAULT );

1 个答案:

答案 0 :(得分:0)

问题1:我是否需要为buf预先分配内存?或者OCI可以做到这一点? 是的,你当然需要。你需要使用OCIHandle

OCIHandleAlloc((dvoid *)OCIEnv, (dvoid **)&OCIStmt, OCI_HTYPE_STMT, len, 
                      (dvoid **)&buf);

问题2:有没有办法告诉buf中存储了多少字节的字符?或者只是将其视为以空值终止的C字符串?

OCIBindByPos

你告诉了多少字节。