DataBase/oracle
oracle PL/SQL_패키지
HUCHUCHU
2020. 4. 20. 23:52
패키지 : 연관성있는 함수나 프로시저를 그룹으로 모아놓은 개념
패키지의 구성 : 선언부 + 몸체부 ( 선언부에서 선언되지않아도 몸체부에서 사용가능. but 권장x)
***구문형식
create [or replace] package 패키지명
is [as]
procedure 프로시저1이름,
procedure 프로시저2이름,
....
end;
create [or replace] package body 패키지명
is [as]
procedure 프로시저이름
subprogram bodis : 실제 작동하게 될 서브프로그램(프로시저or함수)
end;
< 패키지의 실행 >
패키지는 여러 환경하여 호출되어 실행 가능
패키지에대한 실행 권한을 가진 사용자만 실행시킬 수 있다
<패키지 삭제>
선언부와 몸채부 모두 삭제 or 몸체부만 삭제 가능
drop package 패키지명;
drop package body 패키지명;
패키지 선언부
1
2
3
4
5
|
create or replace package emp_proc is
procedure emp_sum;
procedure emp_avg;
end;
/
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
패키지 body
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
create or replace package body emp_proc as
procedure emp_sum is
cursor emp_tot_sum is
select count(*), sum(nvl(salary,0)) from employees;
tot_num number;
tot_sum number;
begin
open emp_tot_sum;
fetch emp_tot_sum into tot_num, tot_sum;
dbms_output.put_line('전체인원수 : ' || tot_num || ', 급여합계 : ' || tot_sum);
close emp_tot_sum;
end emp_sum;
procedure emp_avg is
cursor emp_tot_avg is
select count(*), avg(nvl(salary,0)) from employees;
tot_num number;
tot_avg number;
begin
open emp_tot_avg;
fetch emp_tot_avg into tot_num, tot_avg;
dbms_output.put_line('전체인원수 : ' || tot_num || ', 평균급여 : ' || tot_avg);
close emp_tot_avg;
end emp_avg;
end; --패키지 끝
/
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
패키지 실행
1
2
3
4
|
--패키지 실행방법 : exec 패키지명.프로시저이름
exec emp_proc.emp_avg;
exec emp_proc.emp_sum;
|