• Oracle重载


    1、重载的概念

    指在一个程序包中,多个程序单元使用相同的名称。但要注意:重载子程序必须同名不同参。即名称相同,参数不同,参数不同体现在参数的数量、参数顺序、参数类型是不同的。
    仅参数名和参数模式不同,不可以重载;
    例:procedure select_score(s1 IN char);
           procedure select_score(p1 OUT char);
    仅返回的数据类型不同,不可以重载
     FUNCTION five_score(sc number) RETURN varchar2;
     FUNCTION five_score(sc number) RETURN number;
    重载子程序参数必须在类型系列方面有所不同。
     procedure select_score(s1 IN char);
     procedure select_score(p1 IN number);

    2、示例

    在程序包中创建3个ADD函数,分别用于实现两数之和、连接两个字符串、在某日期上加上N天。

    CREATE OR REPLACE PACKAGE overloading IS
    
    FUNCTION add(num1 in number,num2 in number)
      RETURN number;
    
    FUNCTION add(str1 in varchar2,str2 in varchar2)
      RETURN varchar2;
    
    FUNCTION add(date1 in date,n in number)
      RETURN  date;
    END;
    CREATE OR REPLACE PACKAGE BODY overloading
     IS
    --求两数之和
    FUNCTION add(num1 in number,num2 in number)
      RETURN number   IS
       result number;
       BEGIN
         result:=num1+num2;
         return result;
      END;
    --求两个字符串连接值
    FUNCTION add(str1 in varchar2,str2 in varchar2)
      RETURN varchar2
     IS
     result varchar2(200);
    BEGIN
       result:=str1 || str2;
      RETURN result;
    END;
    --求某日期N天后的日期值
    FUNCTION add(date1 in date,n in number)
      RETURN  date
     IS
     result date;
    BEGIN
        result:=date1+n;
        RETURN result;
    END;
    END  overloading;
    
    --对重载函数的调用
    DECLARE
       v_date date;
       v_number number;
       v_str varchar2(200);
    BEGIN
       v_date:=overloading.add(sysdate,5);
       v_number:=overloading.add(157,654);
       v_str:=overloading.add('THIS IS ',‘ OVERLOADING');
       dbms_output.put_line('5天后是:'||v_date);
       dbms_output.put_line('两数相加值是:' || v_number);
       dbms_output.put_line('两字符串连接值是:' || v_str);
    END;
  • 相关阅读:
    【51nod1674】区间的价值 V2(算法效率--位运算合并优化+链表实现)
    【bzoj 2339】[HNOI2011]卡农(数论--排列组合+逆元+递推)
    关于中国剩余定理{附【转】中国剩余定理 }
    JavaScript操作BOM
    学员操作—统计考试平均成绩
    JavaScript基础
    JDBC
    进制
    事务
    复习
  • 原文地址:https://www.cnblogs.com/CX66/p/14092734.html
Copyright © 2020-2023  润新知