Normaly我的函数返回一个雇员的sallary值,其中empno作为函数的输入。如果没有具有给定号码的员工,我想抛出写入屏幕的异常(“找不到该员工编号的员工!”)。问题是那么没有数字作为返回值,那么如何在Oracle PL / SQL中解决这个问题呢?
答案 0 :(得分:2)
如果抛出异常,则它们不是返回值。引发异常,调用堆栈结束。
你当然可以在函数中使用no_data_found:
CREATE OR REPLACE function get_employees (pID in varchar2) return Number
As
salary Number;
begin
begin
select e.salary into salary from employees e where employee_id=pID;
EXCEPTION WHEN NO_DATA_FOUND THEN
salary := -1;
END;
return salary;
end get_employees;
答案 1 :(得分:0)
CREATE OR REPLACE function get_employees (id in varchar2) return varchar2 is
sal employees.salary%type;
begin
select salary into sal from employees where employee_id=id;
return sal;
EXCEPTION WHEN NO_DATA_FOUND THEN
raise_application_error(-20001, 'Custom NO_DATA_FOUND');
end get_employees;
您不能在函数中使用NO_DATA_FOUND,因为它将为null返回提供预定义的异常。