Oracle函數的建立,調用和刪除

本教程介紹瞭如何使用函數的語法,並演示如何在 Oracle/PLSQL 中建立、使用和刪除函數。html

注:在Oracle中,函數與過程有什麼不一樣? 函數有返回值,而過程沒有返回值。sql

建立函數

就像在其餘語言中同樣,您能夠在Oracle中建立本身的函數數據庫

語法oracle

在Oracle中建立函數的語法是:app

CREATE [OR REPLACE] FUNCTION function_name
   [ (parameter [,parameter]) ]

   RETURN return_datatype

IS | AS

   [declaration_section]

BEGIN
   executable_section

[EXCEPTION
   exception_section]

END [function_name];

建立過程或函數時,能夠定義參數。 有三種類型的參數能夠聲明:函數

  • IN - 此類型參數能夠由過程或函數引用。 參數的值不能被過程或函數覆蓋(相似只讀)。
  • OUT - 此類型參數不能由過程或函數引用,但參數的值能夠被過程或函數覆蓋(相似只寫)。
  • IN OUT - 此類型參數能夠由過程或函數引用,參數的值能夠被過程或函數覆蓋(相似讀與)。

示例fetch

咱們來看一下如何在Oracle中建立一個函數的例子。如下是Oracle函數的簡單示例:code

CREATE OR REPLACE Function FindCourse
   ( name_in IN varchar2 )
   RETURN number
IS
   cnumber number;

   cursor c1 is
   SELECT course_number
     FROM courses_tbl
     WHERE course_name = name_in;

BEGIN

   open c1;
   fetch c1 into cnumber;

   if c1%notfound then
      cnumber := 9999;
   end if;

   close c1;

RETURN cnumber;

EXCEPTION
WHEN OTHERS THEN
   raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);
END;

此函數稱爲FindCourse。 它有一個名爲name_in的參數,它返回一個數字。 若是找到基於課程名稱(course_name)的匹配項,該函數將返回課程編號,不然返回99999htm

在上面函數定義完成後,您能夠在SQL語句中引用這個函數了,以下所示:教程

SELECT course_name, FindCourse(course_name) AS course_id
FROM courses
WHERE subject = '數學';

刪除函數

在Oracle中建立函數後,您可能會根據須要將其從數據庫中刪除。

語法

在Oracle中刪除函數的語法是:

DROP FUNCTION function_name;
  • function_name - 要刪除的功能的名稱。

示例

咱們來看一下如何在Oracle中刪除一個函數的例子。

DROP FUNCTION FindCourse;

執行上面代碼後將刪除FindCourse函數。

相關文章
相關標籤/搜索