기타 자료형
- 이진 자료 저장을 위한 자료 타입
- BLOB, RAW, LONG RAW, BFILE
1) RAW
- 상대적으로 작은 양의 이진 자료를 저장
- 인덱스 처리가 가능
- 데이터베이스에서는 해석이나 변화 작업은 수행하지 않음
- 최대 2000BYTE 까지 저장 가능
컬럼명 RAW(크기)
사용 예시
CREATE TABLE TEMP07(
COL1 RAW(1000),
COL2 RAW(200)
);
INSERT INTO TEMP07
VALUES(HEXTORAW('6ADC'), HEXTORAW('FF'));
SELECT * FROM TEMP07;
2) BFILE
- 이진 데이터 저장
- 대상이 되는 이진 데이터를 데이터베이스
외부에 저장- 경로 정보(DIRECTORY 객체)만 데이터베이스에 저장
- 4GB까지 처리 가능
컬럼명 BFILE; ※ 디렉토리 별칭은 30 BYTE, 파일명은 256 BYTE 까지 허용
예시
- 원본자료(그림)이 저자된 디렉토리 객체 생성
CREATE DIRECTORY TEST_DIR AS 'D:\A_TeachingMaterial\2.Oracle';
CREATE TABLE TEMP08(
COL1 BFILE);
INSERT INTO TEMP08
VALUES(BFILENAME('TEST_DIR','sample.jpg'));
select * from TEMP08;
3) BLOB
- 이진 자료 저장
- 대상이 되는 이진 데이터를 데이터베이스 내부에 저장
- 4GB까지 처리 가능
컬러명 BLOB;
예시
CREATE TABLE TEMP09(
COL1 BLOB);
--익병 블록으로 저장 쿼리를 작성
DECLARE
L_DIR VARCHAR(20) := 'TEST_DIR';
L_FILE VARCHAR(30) := 'sample.jpg';
L_BFILE BFILE;
L_BLOB BLOB;
BEGIN
INSERT INTO TEMP09(COL1) VALUES(EMPTY_BLOB())
RETURN COL1 INTO L_BLOB;
L_BFILE := BFILENAME(L_DIR, L_FILE);
DBMS_LOB.FILEOPEN(L_BFILE, DBMS_LOB.FILE_READONLY);
DBMS_LOB.LOADFROMF(L_BLOB, L_BFILE, DBMS_LOB.GETLENGTH:L_BFILE)));
DBMS_LOB.FILECLOSE(L_BFILE));
COMMIT;
END;