
OracleLOB에서 커서를 처음 위치로 이동시키기 위해 OCILob::rewind 함수를 호출하는 것은 필수적이지 않습니다.
LOB 데이터를 읽기 전에 OCILob::rewind 함수를 호출하는 것이 좋지만, OracleLOB의 버퍼링 특성으로 인해 커서가 자동으로 처음 위치로 이동됩니다.
만약에 LOB 데이터를 읽기 전에 OCILob::rewind 함수를 호출하지 않더라도, LOB 데이터를 읽을 수 있습니다.
그러나, 커서가 자동으로 처음 위치로 이동되지 않을 수 있으므로, OCILob::rewind 함수를 호출하는 것이 안전하고 안정적인 방법입니다.
다음과 같은 예제를 통해 OCILob::rewind 함수를 호출하지 않고도 LOB 데이터를 읽을 수 있는 방법을 확인할 수 있습니다.
#hostingforum.kr
c
#include
int main() {
// Oracle 연결 설정
OCIEnv* env;
OCIError* err;
OCISvcCtx* svc;
OCIStmt* stmt;
OCILobLocator* lob;
// Oracle 연결 설정
OCIEnvCreate(&env, OCI_DEFAULT, 0, 0, 0, 0, 0, 0);
OCIHandleAlloc(env, (dvoid)&err, OCI_HTYPE_ERROR, 0, 0);
OCIHandleAlloc(env, (dvoid)&svc, OCI_HTYPE_SVCCTX, 0, 0);
OCIHandleAlloc(env, (dvoid)&stmt, OCI_HTYPE_STMT, 0, 0);
OCIHandleAlloc(env, (dvoid)&lob, OCI_HTYPE_LOB, 0, 0);
// LOB 데이터 읽기
OCIStmtPrepare(stmt, err, "SELECT BLOB_COLUMN FROM TABLE_NAME", OCI_NTV_SYNTAX, OCI_DEFAULT);
OCIStmtExecute(svc, stmt, err, 1, 0, 0, 0);
// LOB 데이터 읽기
OCIStmtFetch(stmt, err, 1, OCI_FETCH_NEXT, 0);
// LOB 데이터 읽기
OCILobRead(lob, 1, 1, 0, 0, 0);
// Oracle 연결 해제
OCIHandleFree(err, OCI_HTYPE_ERROR);
OCIHandleFree(svc, OCI_HTYPE_SVCCTX);
OCIHandleFree(stmt, OCI_HTYPE_STMT);
OCIHandleFree(lob, OCI_HTYPE_LOB);
return 0;
}
위 예제에서 OCILob::rewind 함수를 호출하지 않고도 LOB 데이터를 읽을 수 있습니다. 그러나, 커서가 자동으로 처음 위치로 이동되지 않을 수 있으므로, OCILob::rewind 함수를 호출하는 것이 안전하고 안정적인 방법입니다.
2025-06-19 15:15