개발자 Q&A

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

2025.06.06 20:43

OCILob::close 함수 사용 중 오류 발생

목록
  • DP전문가 오래 전 2025.06.06 20:43
  • 97
    1
저는 Oracle의LOB(Large OBject) 기능을 사용하여 큰 객체를 처리하고 있습니다.
LOB 객체를 사용하기 전에 OCILob::open 함수를 사용하여 객체를 열고, 처리가 끝나면 OCILob::close 함수를 사용하여 객체를 닫습니다.
이때 OCILob::close 함수를 호출했는데, 오류가 발생하여 객체가 닫히지 않습니다.
오류 메시지는 "ORA-22275: 오브젝트가 닫혀있지 않습니다." 이라고 나옵니다.
이 문제를 해결할 수 있는 방법이 있을까요?

LOB 객체를 닫기 전에 OCILob::isopen 함수를 사용하여 객체가 여전히 열려 있는지 확인하였습니다.
하지만 여전히 오류가 발생하고 객체가 닫히지 않습니다.

OCILob::close 함수를 호출할 때 어떤 문제가 발생하는지 알려주세요.
또한, LOB 객체를 닫기 전에 해야 할 추가적인 작업이 있는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  오래 전



    LOB 객체를 닫기 전에 OCILob::isopen 함수를 사용하여 객체가 여전히 열려 있는지 확인하는 것은 올바른 방법입니다. 그러나 여전히 오류가 발생하는 이유는 OCILob::close 함수를 호출할 때 발생하는 문제 때문입니다.

    OCILob::close 함수를 호출할 때, 오류가 발생하는 이유는 다음과 같습니다.

    1. 세션 종료: OCILob::close 함수를 호출한 후, 세션을 종료하지 않은 경우 오류가 발생합니다. LOB 객체를 닫기 전에 세션을 종료해야 합니다.
    2. 다른 세션에서 LOB 객체를 열어두기: 다른 세션에서 LOB 객체를 열어두기 때문에 OCILob::close 함수를 호출할 때 오류가 발생합니다. 다른 세션에서 LOB 객체를 닫아주어야 합니다.
    3. LOB 객체가 이미 닫혀있을 경우: OCILob::close 함수를 호출할 때, LOB 객체가 이미 닫혀있을 경우 오류가 발생합니다. OCILob::isopen 함수를 사용하여 LOB 객체가 여전히 열려 있는지 확인하고, 닫기 전에 추가적인 작업을 수행해야 합니다.

    LOB 객체를 닫기 전에 해야 할 추가적인 작업은 다음과 같습니다.

    1. 세션 종료: LOB 객체를 닫기 전에 세션을 종료해야 합니다.
    2. 다른 세션에서 LOB 객체를 닫기: 다른 세션에서 LOB 객체를 닫아주어야 합니다.
    3. LOB 객체가 이미 닫혀있을 경우: OCILob::isopen 함수를 사용하여 LOB 객체가 여전히 열려 있는지 확인하고, 닫기 전에 추가적인 작업을 수행해야 합니다.

    다음은 예제입니다.

    #hostingforum.kr
    c
    
    // LOB 객체를 열기
    
    OCILobLocator* locator = OCILobOpen(...);
    
    
    
    // LOB 객체를 닫기 전에 세션을 종료
    
    OCISessionRelease(...);
    
    
    
    // LOB 객체가 여전히 열려 있는지 확인
    
    if (OCILobIsOpen(locator)) {
    
        // LOB 객체를 닫기
    
        OCILobClose(locator);
    
    }
    
    


    이 예제에서는 LOB 객체를 닫기 전에 세션을 종료하고, LOB 객체가 여전히 열려 있는지 확인합니다. LOB 객체가 여전히 열려 있으면, LOB 객체를 닫습니다.

    2025-06-06 20:44

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

검색

게시물 검색