<샘플코드에서 사용한 데이터는 HR 스키마이고, 오라클 설치시 생성할 수 있는 기본 스키마 입니다>
함수에서도 overloading 이 가능합니다.
- 파라미터의 타입이 다른 샘플입니다.
create or replace package overload_funcion
is
function f1 (p1 number) return number;
function f1 (p1 varchar2) return varchar2;
end;
/
create or replace package body overload_funcion
is
function f1 (p1 number) return number
is
begin
return p1;
end;
function f1 (p1 varchar2) return varchar2
is
begin
return 'hi~ '||p1;
end;
end;
select overload_funcion.f1(1) from dual;
-------------------------------------------------------
OVERLOAD_FUNCION.F1(1)
----------------------
1
select overload_funcion.f1('1') from dual;
-------------------------------------------------------
OVERLOAD_FUNCION.F1('1')
-------------------------
hi~ 1
- 오류가 발생하는 샘플 - 함수의 파라미터 타입이 같은 경우
create or replace package overload_funcion
is
function f1 (p1 number) return number;
function f1 (p1 number) return varchar2;
end;
/
create or replace package body overload_funcion
is
function f1 (p1 number) return number
is
begin
return p1;
end;
function f1 (p1 number) return varchar2
is
begin
return p1||'hi';
end;
end;
오류가 발생합니다.
select overload_funcion.f1(1) from dual;
-------------------------------------------------------
ORA-06553: PLS-307: too many declarations of 'F1' match this call
06553. 00000 - "PLS-%s: %s"
*Cause: SQL compilation failed because of an illegal reference to a
PL/SQL unit.
*Action: If the PL/SQL error message does not provide a workaround, then
try the SQL statement as a top-level call as the appropriate user
with the appropriate privileges.
Error at Line: 188 Column: 8
- 컴파일된 오브젝트 확인하는 방법 - 항상 대문자로 조회를 해야 합니다.
select * from user_objects
where object_name = upper('overload_funcion')
;
'Database > PLSQL' 카테고리의 다른 글
053 - [Oracle PL/SQL] Package - Forward Declaration (0) | 2024.03.06 |
---|---|
052 - [Oracle PL/SQL] Package - Overloading (standard package) (0) | 2024.03.06 |
050 - [Oracle PL/SQL] Package - Overloading (procedures) (0) | 2024.03.06 |
049 - [Oracle PL/SQL] Package - recompile the package (0) | 2024.02.28 |
048 - [Oracle PL/SQL] Package - visibility of components (0) | 2024.02.28 |