从包(oracle、sql)调用函数时,参数的数字或类型错误



所以,我在一个包中得到了两个同名的函数。

create or replace package body employee_pkg
as
function fullname(
last_in employees.last_name%type,
first_in employees.first_name%type
)
return fullname_t
is
begin
return last_in || ', ' || first_in;
end;

function fullname(employee_id_in in employees.employee_id%type)
return fullname_t
is
l_fullname fullname_t;
begin
select fullname(last_name, first_name) into l_fullname
from employees
where employee_id = employee_id_in;

return l_fullname;
end;
end employee_pkg;
/

Fun1:获取最后一个-&名字(参数(并返回全名
Fun2:getID->获取最后一个-&表中ID的名字并返回全名

,每次我试图调用函数时,我都会得到错误:

PLS-00306:调用"FULLNAME"时参数的数量或类型错误

我试着调用这样的函数:(带有姓氏和名字的方法(

declare
last_in employees.last_name%type;
first_in employees.first_name%type;
begin
last_in := 'Lastname';
first_in := 'Firstname';

employee_pkg.fullname(last_in, first_in);
end;
/

也像这样:(带ID的方法(

declare
eID employees.employee_id%type;
begin
eID := 1;

employee_pkg.fullname(eID);
end;
/

为了测试它,我使用人力资源用户。

在我看来,一切都应该按预期进行,但显然出了问题,我试着弄清楚问题出在哪里。

提前感谢你帮我找到解决问题的办法。

第页。S.:代码片段来自《预言家》杂志的一篇文章,作者是Steven Feuerstein。链接

在包主体中,fullname的两个定义都是FUNCTIONS,因此调用时需要将返回的值存储在变量中。

当你调用过程时,试着这样调用它们:

DECLARE
last_in       employees.last_name%TYPE;
first_in      employees.first_name%TYPE;
eID           employees.employee_id%TYPE;
l_full_name   fullname_t;
BEGIN
last_in := 'Lastname';
first_in := 'Firstname';
l_full_name := employee_pkg.fullname (last_in, first_in);
eID := 1;
l_full_name := employee_pkg.fullname (eID);
END;
/

相关内容

最新更新