萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> Oracle中的子程序之二函數

Oracle中的子程序之二函數

函數是一個能夠計算結果值的子程序,函數除了有一個RETURN子句之外,其它結構跟過程類似。值得 注意的是,Oracle中的函數必須提供返回值,如果你定義的子程序沒有返回值,那麼你不應該把它定義 成函數,而應該定義成過程。

一、函數

示例1:創建不帶參數的函數

CREATE OR REPLACE FUNCTION currentTime  --沒有參數,不能加括號
RETURN VARCHAR2
AS
BEGIN
RETURN TO_CHAR(SYSDATE,'YYYY"年"MM"月 "DD"日"HH24"時"MI"分"SS"秒"');
END;

既然函數有返回值,那麼函數就可以在允許有表達式的地方出現(帶有輸出參數或輸入輸出參數的函 數除外)如:

DECLARE
myStr VARCHAR2(30);
BEGIN
myStr:=currentTime;
DBMS_OUTPUT.PUT_LINE(myStr);
END;

也可以使用SELECT語句查看函數的返回值:

SELECT currentTime FROM DUAL;

示例2:創建帶有輸入參數的函數

CREATE OR REPLACE FUNCTION getEmpNameByEmpNo(no [IN] NUMBER)
RETURN VARCHAR2
AS
name VARCHAR2(20);
BEGIN
SELECT eName INTO name FROM EMP WHERE empNo=no;
RETURN name;
EXCEPTION
WHEN NO_DATA_FOUND THEN
name:=' 無此員工';
RETURN name;
END;

示例3:創建帶有輸出參數的函數

CREATE OR REPLACE FUNCTION getEmpNameAndJobByEmpNo(no NUMBER,job OUT VARCHAR2)
RETURN VARCHAR2
AS
name VARCHAR2(20);
BEGIN
SELECT eName,job INTO name,job FROM EMP WHERE empNo=no;
RETURN name;
END;

調用方式如下:

DECLARE
job emp.job%TYPE;
BEGIN
DBMS_OUTPUT.PUT_LINE (getEmpNameAndJobByEmpNo(7788,job));
DBMS_OUTPUT.PUT_LINE(job);
END;

  • 共2頁:
  • 上一頁
  • 1
  • 2
  • 下一頁
copyright © 萬盛學電腦網 all rights reserved