數據庫程序設計6 函數

目錄

函數

函數跟過程的區別

函數創建

調用函數的限制

過程和函數

刪除函數

函數

函數是命名的PL/SQL塊,能夠返回值,可以存儲在數據庫中,能夠作爲表達式的一部分被調用。

函數跟過程的區別

函數能夠返回值,過程是靠out參數;過程不能作爲獨立語句,而函數是作爲一個表達式使用。

函數創建

語法:

CREATE [OR REPLACE] FUNCTION function name
[(parameter1 [mode1] datatypel,
parameter2 [mode2] datatype2,
...)]
RETURN datatype
IS|AS
PL/ SQL Block;

注意:函數參數必須取輸入,帶輸出參數的調用的時候不能用。

例子:

函數的調用

DECLARE V_ ann_sal NUMBER(9,2) ;
BEGIN
    get_annual_income(V_ann_sal);
    dbms_output.put_line(v_annsal) ;
END ;

函數的定義

create or replace function annual income (P_ empno ermp . empno8type)
return number
is
    v_ ann_sal number(9,2);
begin
    SELECT sal*12+nvl (comm, 0)*10 +20000
    INTO V_ann_sal
    FROM emp
    WHERE empno=p_ empno;
    return(V_ann_sal) ;
EXCEPTION
    WHEN no data found THEN
    return(0);
end annual income ;

函數的參數也可以是字段名。

調用函數的限制

爲了從SQL表達式中調用函數,用戶定義函數必須:

  • 只接受IN參數
  • 只接受有效的SQL數據類型,而不接受PL/ SQL特殊的類型作爲參數
  • 返回數據類型爲有效的SQL數據類型,而非PL/ SQL特殊的類型
  • 在一個表上的UPDATE或DELETE語句中調用的函數不能查詢及更新同一個表
  • 從SQL語句中調用的函數不能包含結束事務的語句(提交、回滾等)

函數最好僅執行一些計算過程等。

過程和函數

函數能夠返回值,過程是靠out參數;過程不能作爲獨立語句,而函數是作爲一個表達式使用。

過程 函數
作爲一個獨立的PL/SQL語句執行 作爲表達式的一部分調用
在規格說明中不包含RETURN子句 必須在規格說明中包含RETURN子句
可以返回很多值 必須返回單個值
不用包含RETURN 語句 必須包含至少一條RETURN語句

 

函數傾向於運算、合法治判斷。

刪除函數

語法:

DROP FUNCTION function_name

注意:屬於DDL語句,無法rollback

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章