본문 바로가기

BI, DB, DW/Oracle

oracle 패키지 소스를 파일로 저장하는 스크립트

   1: declare
   2:     c_owner_name varchar2(255) := 'scott';
   3:     cursor pkg_cur is 
   4:         select * from all_source
   5:         where owner = c_owner_name
   6: --        and name = '패키지이름 특정할 경우'
   7:         and (type = 'PACKAGE' or type = 'PACKAGE BODY')
   8:         ;
   9:     x_filename_output varchar2(255);
  10:     OutFile  utl_file.file_type;
  11:     
  12:     -- 폴더 이름 :  
  13:     DIR_NAME varchar2(255) := 'EXP_DIR';
  14: begin
  15:     OutFile := utl_file.fopen(DIR_NAME, 'whole.sql', 'w');
  16:     for pkg_rec in pkg_cur loop
  17:           -- file open succeed...
  18:           IF utl_file.is_open(OutFile) THEN
  19:             utl_file.put(OutFile, pkg_rec.text);
  20:             utl_file.fflush(OutFile);
  21:           end if;
  22:     end loop;
  23:     dbms_output.put_line(
  24:         case when utl_file.is_open(OutFile) 
  25:         then 'opened' else 'not opened' 
  26:         end);
  27:     IF utl_file.is_open(OutFile) THEN
  28:         utl_file.fclose(OutFile);
  29:     end if;
  30: end;

헌데 utl_file.fopen() 내부 함수를 이용하려면 DIRECTORY를 미리 구성해야 한다.
(일종의 alias 개념으로 보면 될 듯. 시스템의 특정 경로에 대한 이름을 생성해서 사용한다)
다음 쿼리를 사용해서 생성되어 있는 DIRECTORY 항목을 확인할 수 있고,
혹은 DIRECTORY 항목을 생성할 수 있다.
   1: select * from all_directories;
   2: create or replace directory dir_temp as 'c:\temp';
   3: grant read, write on directory tempdir to scott;

'BI, DB, DW > Oracle' 카테고리의 다른 글

Oracle 스키마 문서화 도구, OraSchemadoc  (0) 2009.08.11