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;
原文地址:https://www.cnblogs.com/CX66/p/14092734.html