模块重载
多态:语言能够定义并且选择性的使用多个相同名称的程序中的一个的能力。
静态多态:在编译时刻决定使用哪个程序。重载即为静态多态。
动态多态:在运行时刻决定使用哪个程序。
pl/sql支持在块的声明部分,包的声明部分和包体部分,对象类型的定义中对过程和函数进行重载
重载的限制:
1、重载的程序的参数中至少一个来自不同的数据类型
参数的数据类型不同但只是属于不同的子类型,不能进行重载,比如一个参数是char,另一个是varchar2。
但在从0g开始,使用数字类型的不同子类型,也可以重载,比如一个参数是pls_integer,另一个程序的参数是binary_float。oracle遵循这样的优先级:pls_integer或者binary_integer,number,binary_float,binary_double。
2、重载程序只是参数的名称不同,在调用时必须使用命名表示法。
3、不能仅靠参数列表中的参数模式区别重载程序
4、重载函数不能仅靠返回值的数据类型区分
5、所有的重载程序必须在相同的pl/sql作用范围或者同一个中定义。
比如:declare
procedure proc_name (num_in in pls_integer) is
begin
dbms_output_put_line('pls_integer version');
end proc_name;
procedure proc_name (num_in in number) is
begin
dbms_output.put_line('number version');
end proc_name;
begin
proc_name(1.1);
proc_name(1);
end;