oracle 自定義函數
阿新 • • 發佈:2017-05-19
lac 數列 exp tab 函數列表 bold ets 可選 microsoft
函數
函數與存儲過程相似,也是數據庫中存儲的已命名PL-SQL程序塊。函數的主要特征是它必須有一個返回值。通過return來指定函數的返回類型。在函數的任何地方可以通過return expression語句從函數返回,返回類型必須和聲明的返回類型一致。
語法:
create [or replace] function function_name [(parameter_list)] return datatype {is/as} [local_declarations] begin executable_statements; [exception exception_handlers;] end;
說明:
function_name:函數名稱。
parameter_list:函數列表,可選。
return 自居:指定函數的返回類型,不能指定大小。
local_declarations:局部變量聲明,可選。
executable_statements:要執行的PL-SQL語句。
exception_handlers:異常處理,可選。
or repalce:是否覆蓋,可選。
例:根據員工編號獲得員工薪水。
--根據no查詢sal CREATE OR REPLACE FUNCTION fun_getSal(eno NUMBER) RETURNNUMBER --返回類型 AS v_sal emp.sal%TYPE; BEGIN SELECT sal INTO v_sal FROM emp WHERE empno = eno; RETURN v_sal; EXCEPTION WHEN OTHERS THEN raise_application_error(-20012,‘該雇員不存在‘); END fun_getSal;
調用函數:
--調用函數,自定義異常處理 DECLARE v_sal NUMBER; emp_20012 EXCEPTION; PRAGMA EXCEPTION_INIT(emp_20012,-20012); BEGIN v_sal:=fun_getsal(7788); dbms_output.put_line(‘sal:‘||v_sal); EXCEPTION WHEN emp_20012 THEN dbms_output.put_line(‘該雇員不存在‘); END;
註意:
1、函數參數和返回類型只聲明參數,不指定大小。
2、可執行部分至少有一條return語句。
3、調用函數時,不能將函數作為單獨的語句存在,可以作為表達式的一部分。
適用場合:
1、如果需要返回多個值和不返回值,就使用存儲過程;如果只需要返回一個值,就使用函數。
2、存儲過程一般用於執行一個指定的動作,函數一般用於計算和返回一個值。
3、可以再SQL內部調用函數來完成復雜的計算問題,但不能調用存儲過程。
oracle 自定義函數