개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.19 15:14

OCILob::rewind 관련 질문

목록
  • 그래프이론도령 오래 전 2025.06.19 15:14
  • 67
    1
제가 현재 OracleLOB를 사용하여 BLOB 데이터를 처리하고 있습니다.
LOB 데이터를 읽기 전에 OCILob::rewind 함수를 호출하여 커서를 처음 위치로 이동시켜야 하는지 궁금합니다.
만약에 LOB 데이터를 읽기 전에 OCILob::rewind 함수를 호출해야 한다면,
해당 함수를 호출하지 않고도 LOB 데이터를 읽을 수 있는 방법은 없을까요?

    댓글목록

    profile_image
    나우호스팅  오래 전



    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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,645건 / 7 페이지

검색

게시물 검색