2013-11-27 40 views
-1

我的函數通常返回僱員的薪水值,其中empno作爲函數的輸入。如果沒有給定號碼的員工存在,我想拋出一個寫入屏幕的異常(「沒有員工發現該員工號碼!」)。問題是,那麼沒有數字作爲返回值,那麼如何在Oracle PL/SQL中解決這個問題?PL/SQL:函數有什麼返回值,但有例外

+1

你嘗試過什麼?關鍵是要有一個異常處理程序,就像no_data_found然後write_to_the_screen。祝你好運。 –

+0

EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Employee not found!'); \t RETURN sal_output; 這就是我的異常處理程序的樣子 - btw:atm它什麼都不寫到屏幕上 –

+0

在這種情況下,搜索「set serveroutput」。你的問題已被問及答覆了一千萬次。此外,您的原始問題完全不完整,會誤導您的實際問題。 –

回答

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,因爲它會爲空返回給出預定義的異常。

1

如果引發異常,它們不是返回值。引發異常並且調用堆棧在那裏結束。

您可以在一個功能肯定用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; 
相關問題