overloading이란?
같은 이름의 프로시져, 함수가 파라미터만 다르게 해서 여러개가 정의 가능합니다.
테스트를 하기 위해 테이블과 시퀀스를 생성합니다.
create or replace package over_pack
is
procedure t1_insert_proc
(p1 number,
p2 number);
procedure t1_insert_proc
(p2 number);
end;
/
create or replace package body over_pack
is
procedure t1_insert_proc
(p1 number,
p2 number)
is
begin
insert into t1 values (p1, p2);
end;
procedure t1_insert_proc
(p2 number)
is
begin
insert into t1 values (t1_col1_seq.nextval, p2);
end;
end;
/
패키지내의 하나씩 프로시져를 실행해본다.
결과화면
두번째 프로시져를 실행해본다.
결과화면
서로 다른 프로시져가 실행된 것을 확인할 수 있다.
이것은 supplied package인 dbms_output에서도 확인가능하다.
dbms_output.put_line(1);
dbms_output.put_line('1');
같은 이름의 프로시져, 함수가 파라미터만 다르게 해서 여러개가 정의 가능합니다.
테스트를 하기 위해 테이블과 시퀀스를 생성합니다.
drop table t1 purge;
create table t1(col1 number, col2 number);
create sequence t1_col1_seq
start with 9999;
create table t1(col1 number, col2 number);
create sequence t1_col1_seq
start with 9999;
create or replace package over_pack
is
procedure t1_insert_proc
(p1 number,
p2 number);
procedure t1_insert_proc
(p2 number);
end;
/
create or replace package body over_pack
is
procedure t1_insert_proc
(p1 number,
p2 number)
is
begin
insert into t1 values (p1, p2);
end;
procedure t1_insert_proc
(p2 number)
is
begin
insert into t1 values (t1_col1_seq.nextval, p2);
end;
end;
/
패키지내의 하나씩 프로시져를 실행해본다.
exec over_pack.t1_insert_proc(10,100);
commit;
commit;
결과화면
COL1 | COL2 |
---|---|
10 | 100 |
두번째 프로시져를 실행해본다.
exec over_pack.t1_insert_proc(100);
commit;
commit;
결과화면
COL1 | COL2 |
---|---|
10 | 100 |
9999 | 100 |
이것은 supplied package인 dbms_output에서도 확인가능하다.
dbms_output.put_line(1);
dbms_output.put_line('1');
'Oracle > PL_SQL' 카테고리의 다른 글
print_table프로시져 만들기 (0) | 2009.11.18 |
---|---|
trigger (0) | 2009.11.17 |
테이블 변경시 관련 procedure, function, package 확인 (0) | 2009.11.16 |
wrap pld (0) | 2009.11.16 |
Exception handling (0) | 2009.11.13 |