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;