
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