
	                	                 
OCILob::export 함수를 사용하여 LOB 데이터를 추출한 후 파일로 저장하는 방법은 다음과 같습니다.
1. BLOB 데이터 추출 후 파일로 저장:
   - 추출한 BLOB 데이터를 OCILob::length 함수를 사용하여 크기를 확인합니다.
   - OCILob::read 함수를 사용하여 BLOB 데이터를 읽습니다.
   - 읽은 BLOB 데이터를 파일로 저장합니다.
2. CLOB 데이터 추출 후 파일로 저장:
   - 추출한 CLOB 데이터를 OCILob::length 함수를 사용하여 크기를 확인합니다.
   - OCILob::read 함수를 사용하여 CLOB 데이터를 읽습니다.
   - 읽은 CLOB 데이터를 파일로 저장합니다.
3. BFILE 데이터 추출 후 파일로 저장:
   - 추출한 BFILE 데이터를 OCILob::length 함수를 사용하여 크기를 확인합니다.
   - OCILob::read 함수를 사용하여 BFILE 데이터를 읽습니다.
   - 읽은 BFILE 데이터를 파일로 저장합니다.
파일로 저장하는 방법은 다음과 같습니다.
- 파일을 열어 데이터를 쓰는 방법: OCILob::export 함수를 사용하여 LOB 데이터를 추출한 후, OCILob::write 함수를 사용하여 파일에 데이터를 쓰는 방법입니다.
- 파일을 열어 데이터를 쓰는 방법: OCILob::export 함수를 사용하여 LOB 데이터를 추출한 후, OCILob::write 함수를 사용하여 파일에 데이터를 쓰는 방법입니다.
예제:
#hostingforum.kr
c
#include 
int main() {
    // Oracle 연결 설정
    OCISvcCtx* svcCtx;
    OCIEnv* env;
    OCIError* err;
    OCISession* sess;
    OCIDefine* def;
    OCIStmt* stmt;
    OCILobLocator* lobLoc;
    // Oracle 연결
    OCIEnvCreate(&env, OCI_DEFAULT, 0, 0, 0, 0, 0, 0);
    OCIHandleAlloc(env, (dvoid)&err, OCI_HTYPE_ERROR, 0, 0);
    OCIHandleAlloc(env, (dvoid)&svcCtx, OCI_HTYPE_SVCCTX, 0, 0);
    OCIHandleAlloc(env, (dvoid**)&sess, OCI_HTYPE_SESSION, 0, 0);
    // Oracle 연결 설정
    OCIAttrSet(err, OCI_HTYPE_ERROR, (dvoid*)0, 0, OCI_ATTR_ERROR_MESSAGE_TEXT, env);
    OCIAttrSet(svcCtx, OCI_HTYPE_SVCCTX, (dvoid*)0, 0, OCI_ATTR_SERVER, env);
    OCIAttrSet(sess, OCI_HTYPE_SESSION, (dvoid*)0, 0, OCI_ATTR_SERVER, env);
    // SQL 문 실행
    OCIStmtPrepare(stmt, err, (OraText*)sql, strlen(sql), OCI_NTV_SYNTAX, OCI_DEFAULT);
    OCIStmtExecute(svcCtx, stmt, err, 1, 0, 0, 0);
    // LOB 데이터 추출
    OCIDefineByPos(stmt, &def, err, 1, (dvoid*)&lobLoc, (ub4)sizeof(OCILobLocator), SQLT_BLOB, 0, 0, OCI_DEFAULT);
    // LOB 데이터 크기 확인
    OCILobLength(lobLoc, &length, err);
    // LOB 데이터 읽기
    OCILobRead(lobLoc, 1, length, &buf, &amtRead, err);
    // 파일 열기
    FILE* file = fopen("output.txt", "w");
    // LOB 데이터 파일에 쓰기
    fwrite(buf, 1, amtRead, file);
    // 파일 닫기
    fclose(file);
    // LOB 데이터 닫기
    OCILobFreeTemporary(lobLoc, err);
    return 0;
}
이 예제는 BLOB 데이터를 추출한 후 파일로 저장하는 방법을 보여줍니다. CLOB 데이터나 BFILE 데이터를 추출한 후 파일로 저장하는 방법도 비슷합니다.
2025-06-16 16:20