자료형 - 기타자료형

jsbak·2020년 8월 25일
0

DB

목록 보기
12/35

기타 자료형

  • 이진 자료 저장을 위한 자료 타입
  • 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;
profile
끄적끄적 쓰는곳

0개의 댓글