728x90

1. TO_BLOB() 함수란?
Oracle의 TO_BLOB() 함수는 문자열 또는 RAW 데이터를 BLOB (Binary Large Object) 형식으로 변환하는 함수입니다. 주로 이미지, 영상, PDF, 이진 파일 등 바이너리 데이터를 데이터베이스에 저장할 때 활용됩니다.
2. 함수 문법
TO_BLOB(input_value)
- input_value: 변환할 RAW 또는 문자열 형식의 값
- 반환값: BLOB 객체 (바이너리 데이터)
3. 기본 예제
예제 1: RAW 문자열을 BLOB으로 변환
SELECT TO_BLOB(UTL_RAW.CAST_TO_RAW('Hello World')) AS blob_data
FROM dual;
예제 2: 테이블에 BLOB 저장하기
CREATE TABLE file_storage (
id NUMBER,
file_name VARCHAR2(255),
file_data BLOB
);
INSERT INTO file_storage (id, file_name, file_data)
VALUES (
1,
'example.txt',
TO_BLOB(UTL_RAW.CAST_TO_RAW('파일 내용입니다.'))
);
예제 3: VARCHAR2에서 직접 BLOB 변환
SELECT TO_BLOB(UTL_RAW.CAST_TO_RAW(my_column))
FROM my_table;
4. TO_BLOB() 활용 케이스
- 이미지, 문서 파일을 DB에 저장할 때
- 웹 애플리케이션에서 다운로드 가능한 콘텐츠 저장
- 바이너리 로그 데이터 기록
- 파일 업로드 기능 구현 시 중간 저장소 역할
5. 관련 함수 비교
| 함수명 | 설명 | 용도 |
|---|---|---|
| TO_BLOB() | 문자열/RAW → BLOB 변환 | 파일 저장, 이진 데이터 처리 |
| TO_CLOB() | 문자열 → CLOB 변환 | 텍스트 데이터 저장 |
| UTL_RAW.CAST_TO_RAW() | 문자열 → RAW 변환 | 중간 변환용 |
6. 실무 팁 및 주의사항
- BLOB 칼럼은 일반 SQL 편집기에서 결괏값을 보기가 어렵습니다. 전용 툴 또는 Base64 인코딩 필요
- VARCHAR2를 직접 TO_BLOB에 넣으면 오류가 발생할 수 있습니다.
UTL_RAW.CAST_TO_RAW()를 반드시 중간에 사용해야 합니다. - DBMS_LOB 패키지를 활용하면 BLOB 데이터를 부분적으로 읽고 쓸 수 있습니다.
- 파일 업로드 시 보안(예: 확장자 제한, 용량 제한)을 고려해야 합니다.
7. BLOB 데이터 읽기 예제
DECLARE
l_blob BLOB;
l_raw RAW(32767);
BEGIN
SELECT file_data INTO l_blob FROM file_storage WHERE id = 1;
l_raw := DBMS_LOB.SUBSTR(l_blob, 100, 1); -- 처음 100바이트
DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_VARCHAR2(l_raw));
END;
8. BLOB 활용 실전 예제
파일 다운로드 기능 구현 로직 개요
- 웹 서버에서 파일 업로드 수신
- Oracle DB에
TO_BLOB()으로 저장 - 클라이언트가 다운로드 요청 시
DBMS_LOB.SUBSTR()로 BLOB 읽기 - HTTP 응답으로 파일 전송
출처 및 참고 자료
- Oracle 공식 문서: https://docs.oracle.com/en/database/
- Oracle 21c SQL Reference Manual
- Oracle PL/SQL Packages and Types Reference
- 실제 프로젝트 적용 사례 기반
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] TO_DSINTERVAL() 함수 완전 정복 : 일/시간 간격 처리 마스터하기 (0) | 2025.06.06 |
|---|---|
| [ORACLE] TO_LOB() 함수로 VARCHAR2를 CLOB으로 변환하는 방법 (0) | 2025.06.06 |
| [ORACLE] TO_NCLOB() 함수로 한글 데이터 안정 저장하기 (0) | 2025.06.06 |
| [ORACLE] TO_CLOB() 함수로 VARCHAR2를 CLOB으로 안전하게 변환하기 (0) | 2025.06.06 |
| [ORACLE] TO_TIMESTAMP() 함수로 정밀한 시간 데이터 처리하기 (0) | 2025.06.06 |