问世间情为何物?直教生死相许。天南地北双飞客,老翅几回寒暑。欢乐趣,离别苦,就中更有痴儿女。君应有语,渺万里层云,千山暮雪,只影向谁去?...

pl/sql模块重载

 

 

模块重载
  多态:语言能够定义并且选择性的使用多个相同名称的程序中的一个的能力。
  静态多态:在编译时刻决定使用哪个程序。重载即为静态多态。
  动态多态:在运行时刻决定使用哪个程序。
  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;

阅读更多
个人分类: pl/sql
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭