1. 程式人生 > >oracle 自定義函數

oracle 自定義函數

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)
RETURN
NUMBER --返回類型 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 自定義函數