例) OVERLOADING パッケージに NUMBER 用と PLS_INTEGER 用の COMPLEX ファンクションを用意する。
CREATE OR REPLACE PACKAGE RIVUS.OVERLOADING
IS
FUNCTION COMPLEX(N NUMBER)
RETURN NUMBER;
FUNCTION COMPLEX(N PLS_INTEGER)
RETURN NUMBER;
END;
/
CREATE OR REPLACE PACKAGE BODY RIVUS.OVERLOADING
IS
-- NUMBER 用 常に0を戻す
FUNCTION COMPLEX(N NUMBER)
RETURN NUMBER
IS
BEGIN
RETURN 0;
END;
-- PLS_INTEGER 用 常に1を戻す
FUNCTION COMPLEX(N PLS_INTEGER)
RETURN NUMBER
IS
BEGIN
RETURN 1;
END;
END;
/
SQL> set serveroutput on
SQL> declare
2 n number := 1 ;
3 p pls_integer := 2;
4 begin
5 dbms_output.put_line(overloading.complex(n));
6 dbms_output.put_line(overloading.complex(p));
7 end;
8 /
0
1
ちなみに SQL から呼び出すと NUMBER 型のファンクションが呼ばれる。(SQL に PLS_INTEGER が存在しない)