所以,我在一个包中得到了两个同名的函数。
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;
/