Program Overloading
PL/SQL allows you to define two or more programs with the same name within any declaration section (including a package specification or body, described in the next section). This technique is called overloading. If two or more programs have the same name, they must be different in some other way so that the compiler can determine which program should be used.
Here is an example of overloaded programs in one of Oracle’s own built-in package specifications:
PACKAGE DBMS_OUTPUT IS PROCEDURE PUT_LINE (a VARCHAR2); PROCEDURE PUT_LINE (a NUMBER); PROCEDURE PUT_LINE (a DATE); END;
Each PUT_LINE procedure is identical, except for the datatype of the parameter. That is enough difference for the compiler.
To overload programs successfully, one or more of the following conditions must be true:
Parameters must differ by datatype family (number, character, datetime, or Boolean).
The program type must be different (you can overload a function and a procedure of the same name with identical parameter lists).
The numbers of parameters must be different.
You cannot overload programs if:
Only the datatypes of the functions’ RETURN clauses are different.
Parameter datatypes are within the same family (CHAR and VARCHAR2, NUMBER and INTEGER, etc.).
Only the modes of the parameters are different.