设为首页 - 加入收藏 PHP编程网 - PHP站长网 (http://www.52php.cn)- 电商,百科,编程,业界,移动互联,5G,云计算,站长网!
热搜: 专业 娱乐 服务 applewat
当前位置: 首页 > 站长百科 > 正文

oracle – 太多的声明了

发布时间:2021-01-24 08:37 所属栏目:[站长百科] 来源:网络整理
导读:我在运行以下代码时收到以下错误消息.我是pl / sql(oracle)编码世界的新手,我请求你的帮助. 码: create or replace package learn is function Area(i_rad NUMBER) return NUMBER;function Area(i_length NUMBER,i_width NUMBER:=3) return NUMBER;end;/

我在运行以下代码时收到以下错误消息.我是pl / sql(oracle)编码世界的新手,我请求你的帮助.

码:

create or replace package learn is 
function Area(i_rad NUMBER) return NUMBER;
function Area(i_length NUMBER,i_width NUMBER:=3) return NUMBER;
end;
/

包装体:

create or replace package body learn is 
function Area(i_rad NUMBER) return NUMBER
is
v_pi NUMBER:=3.14;
v number:=to_number(i_rad);
begin
return v_pi * (i_rad ** 2);
end;
function Area(i_length NUMBER,i_width NUMBER:=3) return NUMBER
is
begin
return i_length * i_width;
end;
end learn;

Plsql块

declare
 x number(2):=2;
 y number(2):=5; 
 begin
 DBMS_OUTPUT.put_line('Area (R=3):'||learn.Area(x));
 DBMS_OUTPUT.put_line('Area (R=3):'||learn.Area(x,y));
 end;

错误消息:“AREA”的声明太多与此调用匹配

解决方法

那是因为你的两个param函数中的第二个参数有默认值.如果只提供参数,则第二个函数将假定第二个值为3,现在有两个函数可以被调用,因此调用失败.

我建议你不要做这种超载,因为不清楚哪个功能做什么.

如果你仍然想要这样做,一种方法是强制使用第二个参数,如果你没有任何值要传递,则传递null.

create or replace package learn is
function Area(i_rad NUMBER) return NUMBER;
function Area(i_length NUMBER,i_width NUMBER) return NUMBER;
end;
/

create or replace package body learn is 
function Area(i_rad NUMBER) return NUMBER
is
v_pi NUMBER:=3.14;
v number:=to_number(i_rad);
begin
return v_pi * (i_rad ** 2);
end;
function Area(i_length NUMBER,i_width NUMBER) return NUMBER
is
begin
return i_length * nvl(i_width,3);
end;
end learn;
/

declare
 x number(2):=2;
 y number(2):=5; 
 begin
 DBMS_OUTPUT.put_line('Area (R=3):'||learn.Area(x));
 DBMS_OUTPUT.put_line('Area (R=3):'||learn.Area(x,y));
 end;
 /

如果您有不同的参数名称,则可以执行以下操作:

declare
 x number(2):=2;
 y number(2):=5; 
 begin
 DBMS_OUTPUT.put_line('Area (R=3):'||learn.Area(i_rad => x));
 DBMS_OUTPUT.put_line('Area (R=3):'||learn.Area(x,y));
 end;
 /

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

推荐文章
热点阅读