如何解决oracle pl sql函数重载的语法是什么?
我正在尝试在oracle live plsql中执行函数重载。我找不到任何可以用于函数重载的基本语法。
使用1个参数
create or replace function area(a in number)
return number is
begin
return a*a;
end;
使用2个参数
create or replace function area(a in number,b in number)
return number is
begin
return a*b;
end;
declare
begin
dbms_output.put_line(area(5));
dbms_output.put_line(area(3,4));
end;
ORA-06550:第3行,第31栏: PLS-00363:表达式“ 5”不能用作分配目标
解决方法
PL / SQL使您可以重载嵌套的子程序,程序包子程序和类型方法
关于独立存储过程(功能)的任何事情。
因此,如果将这些功能放入包中,它将按预期工作:
SQL> create or replace package pkg_test as
2 function area (a in number) return number;
3 function area (a in number,b in number) return number;
4 end;
5 /
Package created.
SQL> create or replace package body pkg_test as
2 function area(a in number)
3 return number is
4 begin
5 return a*a;
6 end;
7 function area(a in number,b in number)
8 return number is
9 begin
10 return a*b;
11 end;
12 end;
13 /
Package body created.
SQL> begin
2 dbms_output.put_line(pkg_test.area(3,4));
3 dbms_output.put_line(pkg_test.area(5));
4 end;
5 /
12
25
PL/SQL procedure successfully completed.
SQL>
,
set serveroutput on
declare
function area(a in number,b in number default null)
return number is
begin
if b is null then
return a*a;
end if;
return a*b;
end area;
begin
dbms_output.put_line(area(5));
dbms_output.put_line(area(3,4));
end;
HTH。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。