0

OCI を使用して変数をバインドする方法に関する適切なドキュメントはありますか? out bind変数のバインドに問題があります。buf は、ストアド プロシージャの "OUT" 変数にバインドされています。

質問 1: にメモリを事前に割り当てる必要がありbufますか? またはOCIはそれを行うことができますか?

質問 2: に何バイトの文字が格納されているかを知る方法はありますbufか? それとも、null で終わる 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 );
4

1 に答える 1

0

質問 1: buf にメモリを事前に割り当てる必要がありますか? またはOCIはそれを行うことができますか?はい、もちろん必要です。OCIHandle を使用する必要があります

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

質問 2: buf に格納されている文字のバイト数を確認する方法はありますか? それとも、null で終わる C 文字列として扱いますか?

OCIBindByPos

何バイトか教えてください。

于 2013-11-04T09:43:18.307 に答える