1. sys 나 system user 로 접속한다.
$ sqlplus /nolog
SQL> conn sys/manager
Connected.
2. directory 를 생성한다.
SQL> create directory work_dir as '/work';
Directory created.
3. 생성된 directory 에 대한 read 권한을 준다.
SQL> grant read on directory work_dir to public;
Grant succeeded.
SQL> grant read on directory work_dir to public;
Grant succeeded.
4. 생성한 디렉토리 조회
SQL> select * from dba_directories;
1. 프로시져 소스를 파일로 받는 함수 생성하기.
create or replace procedure cr_proc_script(p_pn varchar2)
is
file_id utl_file.file_type;
cursor c1(v_pn varchar2) is select name, text, line from user_source
where upper(name) like v_pn and type = 'PROCEDURE' order by name,line;
v_name varchar2(30) := ' ';
r_name varchar2(30);
r_text varchar2(4000);
r_line number;
v_line number := 0;
begin
open c1(p_pn);
loop
fetch c1 into r_name, r_text, r_line;
exit when c1%notfound;
if r_name != v_name then
file_id :=
utl_file.fopen('WORK_DIR','cr_'||r_name||'.sql', 'w');
utl_file.put(file_id, 'create or replace ');
select max(line) into v_line from user_source
where name = r_name and type = 'PROCEDURE';
end if;
utl_file.put_line(file_id, r_text);
v_name := r_name;
if (r_name = v_name) and (r_line = v_line) then
utl_file.put_line(file_id, '/');
utl_file.fclose(file_id);
end if;
end loop;
close c1;
end;
/
2. 프로시져 소스 파일로 받기 사용 방법
- 특정 프로시져 파일로 받기.
SQL> exec cr_proc_script('프로시져명');
- user가 가지고 있는 모든 procedure의 source을 보고자 할때
SQL> exec cr_proc_script('%');
3. Trigger Source 파일로 받는 함수 생성하기.
create or replace procedure cr_trg_script(p_tn varchar2)
is
file_id utl_file.file_type;
cursor c1(v_tn varchar2) is select trigger_name, description, trigger_body
from user_triggers
where upper(trigger_name) like v_tn ;
r_trg_name varchar2(30);
r_description varchar2(2000);
r_trg_body varchar2(32000);
begin
open c1(p_tn);
loop
fetch c1 into r_trg_name, r_description, r_trg_body;
exit when c1%notfound;
file_id :=
utl_file.fopen('/mnt3/rctest80/tool', 'cr_'||r_trg_name||'.sql', 'w');
utl_file.put(file_id, 'create or replace trigger ');
utl_file.put_line(file_id, r_description);
utl_file.put_line(file_id, r_trg_body );
utl_file.put_line(file_id, '/');
utl_file.fclose(file_id);
end loop;
close c1;
end;
/
4. 트리거 소스 파일로 받기 사용 방법
- 특정 트리거 소스 파일로 받기.
SQL> exec cr_trg_script('트리거명');
- user가 가지고 있는 모든 trigger의 source을 보고자 할때
SQL> exec cr_trg_script('%');