-1
我的函數通常返回僱員的薪水值,其中empno作爲函數的輸入。如果沒有給定號碼的員工存在,我想拋出一個寫入屏幕的異常(「沒有員工發現該員工號碼!」)。問題是,那麼沒有數字作爲返回值,那麼如何在Oracle PL/SQL中解決這個問題?PL/SQL:函數有什麼返回值,但有例外
我的函數通常返回僱員的薪水值,其中empno作爲函數的輸入。如果沒有給定號碼的員工存在,我想拋出一個寫入屏幕的異常(「沒有員工發現該員工號碼!」)。問題是,那麼沒有數字作爲返回值,那麼如何在Oracle PL/SQL中解決這個問題?PL/SQL:函數有什麼返回值,但有例外
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,因爲它會爲空返回給出預定義的異常。
如果引發異常,它們不是返回值。引發異常並且調用堆棧在那裏結束。
您可以在一個功能肯定用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;
你嘗試過什麼?關鍵是要有一個異常處理程序,就像no_data_found然後write_to_the_screen。祝你好運。 –
EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Employee not found!'); \t RETURN sal_output; 這就是我的異常處理程序的樣子 - btw:atm它什麼都不寫到屏幕上 –
在這種情況下,搜索「set serveroutput」。你的問題已被問及答覆了一千萬次。此外,您的原始問題完全不完整,會誤導您的實際問題。 –