日期:2014-05-17  浏览次数:20838 次

提问一个创建函数之后调用的问题!
我创建了一个函数,如下
create or REPLACE FUNCTION chenweishuai
(empno2 in number,job2 out varchar2) return varchar2
as
nametext emp.ename%type;
begin
select ename,job into nametext,job2 from emp where upper(empno)= upper(empno2);
return nametext;
EXCEPTION
when no_data_found then
 raise_application_error(-20000,'Current Employee is not exists');
end;
然后在下面调用
DECLARE 
empno2text emp.ename%type;
job2text varchar2(200);
begin
empno2text :=chenweishuai(8888,job2text);
dbms_output.put_line(empno2text||' '||job2text);
end;
但是为什么会报参数类型或个数错误呢,我检查了好几遍,个数两个,类型一个number,一个varchar2,没什么问题啊?到底什么原因,好心人给解答下,谢了
exception function

------解决方案--------------------
你的函数编译完有没有报错啊,估计是函数有问题,而不是调用的问题
select ename,job into nametext,job2 from emp where upper(empno)= upper(empno2);
这里边你查询ename和job2干什么,没用吧
改成
select job into nametext from emp where upper(empno)= upper(empno2);

函数创建完成后,打开导航树看一下前面有没有差号,有的话代表编译没通过
------解决方案--------------------
函数编译好后,运行:select * from user_errors;