PL / SQL:具有异常的函数的返回值

时间:2013-11-27 20:05:52

标签: sql oracle plsql

Normaly我的函数返回一个雇员的sallary值,其中empno作为函数的输入。如果没有具有给定号码的员工,我想抛出写入屏幕的异常(“找不到该员工编号的员工!”)。问题是那么没有数字作为返回值,那么如何在Oracle PL / SQL中解决这个问题呢?

2 个答案:

答案 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返回提供预定义的异常。