개발자 Q&A

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

2025.05.30 12:06

OCILob::saveFile 관련 질문

목록
  • SOLID원칙수호자 4일 전 2025.05.30 12:06
  • 11
    1
제가 현재 Oracle의LOB 기능을 사용하여 BLOB 데이터를 저장하고 있는데, OCILob::saveFile 메소드를 사용하여 파일로 저장하는 부분에서 막혀 있습니다.

LOB 객체를 생성하고 데이터를 할당한 후, OCILob::saveFile 메소드를 호출하여 파일로 저장하려고 하는데, 다음과 같은 오류가 발생합니다.

"ORA-22275: 오브젝트가 로우에 속하지 않습니다."

이 오류는 뭘까요? OCILob::saveFile 메소드를 사용하여 파일로 저장하기 전에 어떤 준비작업이 필요한가요?

    댓글목록

    profile_image
    나우호스팅  4일 전



    ORA-22275 오류는 LOB 객체가 ROW에 속하지 않아 발생하는 오류이다.

    LOB 객체를 사용하려면, 먼저 ROW에 LOB 컬럼을 생성해야 합니다. LOB 컬럼을 생성한 후, ROW에 데이터를 삽입한 후에만 LOB 객체를 생성하고 데이터를 할당할 수 있습니다.

    OCILob::saveFile 메소드를 사용하기 전에, 먼저 ROW에 LOB 컬럼이 존재하고, ROW에 데이터가 삽입된 상태여야 합니다.

    LOB 객체를 생성할 때, ROW ID를 통해 ROW에 속한 LOB 객체를 생성해야 합니다. ROW ID를 통해 LOB 객체를 생성한 후, 데이터를 할당하고 saveFile 메소드를 호출하면, 파일로 저장할 수 있습니다.

    예를 들어, ROW ID를 통해 LOB 객체를 생성하는 코드는 다음과 같습니다.

    #hostingforum.kr
    c
    
    OCILobLocator* lob_locator;
    
    ub4 offset = 1;
    
    ub4 chunksize = 1024;
    
    OCIEnv* envhp;
    
    OCIError* errhp;
    
    OCISvcCtx* svchp;
    
    OCIStmt* stmt;
    
    OCIParam* param;
    
    
    
    // ROW ID를 통해 LOB 객체를 생성
    
    status = OCIHandleAlloc(envhp, (dvoid**)&lob_locator, OCI_HTYPE_LOB, 0, 0);
    
    if (status != OCI_SUCCESS) {
    
        // 오류 처리
    
    }
    
    
    
    // ROW ID를 통해 LOB 객체를 생성
    
    status = OCILobCreate(envhp, errhp, svchp, lob_locator, OCI_LOB_READONLY, 0, 0);
    
    if (status != OCI_SUCCESS) {
    
        // 오류 처리
    
    }
    
    


    LOB 객체를 생성한 후, 데이터를 할당하고 saveFile 메소드를 호출하면, 파일로 저장할 수 있습니다.

    #hostingforum.kr
    c
    
    // 데이터를 할당
    
    status = OCILobWrite(envhp, errhp, svchp, lob_locator, offset, chunksize, data, data_len, 1, OCI_LOB_WRITE_APPEND, 0, 0);
    
    if (status != OCI_SUCCESS) {
    
        // 오류 처리
    
    }
    
    
    
    // 파일로 저장
    
    status = OCILobSaveFile(envhp, errhp, svchp, lob_locator, "파일명", 0, 0);
    
    if (status != OCI_SUCCESS) {
    
        // 오류 처리
    
    }
    
    


    ROW ID를 통해 LOB 객체를 생성하고 데이터를 할당한 후, saveFile 메소드를 호출하면, 파일로 저장할 수 있습니다.

    2025-05-30 12:07

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

검색

게시물 검색