728x90
반응형
-- BLOB에 쌓이 파일 특정 경로에 download 하기
--다운로드할 경로 지정 및 사용자 지정..sys는 권한 부여 할 필요 없음
CREATE OR REPLACE DIRECTORY BLOBS AS '/DBMS/MROP/ARC/';
GRANT READ, WRITE ON DIRECTORY BLOBS TO my_user;
-- 파일 생성하는 프로시저
CREATE OR REPLACE PROCEDURE blob_to_file (p_blob IN OUT NOCOPY BLOB,
p_dir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
l_file UTL_FILE.FILE_TYPE;
l_buffer RAW(32767);
l_amount BINARY_INTEGER := 32767;
l_pos INTEGER := 1;
l_blob_len INTEGER;
BEGIN
l_blob_len := DBMS_LOB.getlength(p_blob);
-- Open the destination file.
l_file := UTL_FILE.fopen(p_dir, p_filename,'wb', 32767);
-- Read chunks of the BLOB and write them to the file until complete.
WHILE l_pos <= l_blob_len LOOP
DBMS_LOB.read(p_blob, l_amount, l_pos, l_buffer);
UTL_FILE.put_raw(l_file, l_buffer, TRUE);
l_pos := l_pos + l_amount;
END LOOP;
-- Close the file.
UTL_FILE.fclose(l_file);
EXCEPTION
WHEN OTHERS THEN
-- Close the file if something goes wrong.
IF UTL_FILE.is_open(l_file) THEN
UTL_FILE.fclose(l_file);
END IF;
RAISE;
END blob_to_file;
/
-- 파일 download 하기
DECLARE
l_blob BLOB;
BEGIN
select FILE_CONT -- BLOB관련 컬럼
INTO l_blob
from FILE_INFO -- BLOB관련 테이블
where REG_DT>=to_date('2020/04/01','yyyy/mm/dd HH24:MI:SS')
and rownum = 1;
blob_to_file(p_blob => l_blob,
p_dir => 'BLOBS',
p_filename => 'test.pdf');
END;
/
728x90
반응형
'DBMS > Oracle' 카테고리의 다른 글
Oracle scheduler JOB Trace 뜨는 방법 (0) | 2022.07.20 |
---|---|
Oracle ERP 유지보수 하던 시절에 사용하던 check스크립트 (0) | 2022.07.20 |
explain plan 보기 (0) | 2022.07.20 |
Oracle RAC 신규 설치 후 이관 계획(Migration순서) (0) | 2022.07.20 |
CRS Public VIP Subnet 변경 (0) | 2022.07.20 |