【发布时间】:2016-04-21 21:05:45
【问题描述】:
我正在编写一个函数,用于在输入 ID 时返回学生的姓名。如果输入了数据库中不存在的 ID,我希望引发异常。相反,当我输入错误的学生 ID 时,如果我抛出了基本异常,它要么不返回任何内容,要么返回此错误消息并声明异常:
6503. 00000 - "PL/SQL: Function returned without value"
*Cause: A call to PL/SQL function completed, but no RETURN statement was
executed.
*Action: Rewrite PL/SQL function, making sure that it always returns
a value of a proper type.
这是我的功能:
CREATE OR REPLACE Function STUDENT( S_NUM IN NUMBER)
RETURN varchar2 IS
STUDENT_NAME varchar2(50);
NOTEXISTS EXCEPTION;
cursor S_CUR is
SELECT S_NAME
FROM ROSTER
WHERE S_NUM = S_ID;
BEGIN
open S_CUR;
fetch S_CUR into STUDENT_NAME;
if S_CUR%notfound then
RAISE NOTEXISTS;
end if;
close S_CUR;
RETURN STUDENT_NAME;
EXCEPTION
WHEN NOTEXISTS THEN -- handle the error
dbms_output.put_line('NO STUDENT FOUND.');
END;
有什么想法吗?
【问题讨论】:
-
您需要在
RAISEwhen部分出现异常 -
或者一个RETURN语句,例如,RETURN NULL;
标签: oracle function plsql exception-handling