程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle 函數學習筆記

Oracle 函數學習筆記

編輯:Oracle數據庫基礎
 

函數和存儲過程一樣,也是編譯好存儲在數據庫服務器上的程序代碼。函數與存儲過程最大的不同在於,函數必須要有返回值。當然了,函數具有存儲過程一樣的優點,不知道的伙計,請參見《Oracle學習筆記——存儲過程》。

如果你寫過C或者C++程序,你就應該知道C和C++中有很多內置的函數庫;Oracle也是如此,它也內置了很多的函數,在後續總結中,我會對Oracle中內置的主要函數進行總結。但是,內置的函數只是提供大眾的,普通的功能;而很多時候無法滿足我們實際工作的需要,此時我們就需要編寫我們自己的函數了。好了,開始我們函數的學習之旅吧。

 

創建一個函數

先實實在在的寫上一個函數,看看函數在Oracle中到底是什麼樣子的。

create or replace function func_test(param1 number default 20)return number
is
    val number;begin
    val := 20;
    if param1 >= val then
        return(param1);
    else
        return(val);
    end if;end;

這就是一個簡單的函數,其中func_test是函數的名字,括號中的內容和存儲過程一樣,都是參數。return number表示函數返回值的數據類型是number類型;由於函數必須要有返回值,所以可以看到代碼中的return(val)語句。

在PL/SQL中定義一個函數就是如此的簡單,只需要記住一點——必須要有返回值。

 

編譯函數

就像我們寫C++、Java代碼一樣,寫完以後都需要編譯。在PL/SQL Developer中,直接單擊Execute就可以完成編譯;而在命令行中使用命令alter function ... compile對函數進行編譯,比如:

SQL> alter function func_test compile;
 

調用函數

我們定義的函數終歸到底還是提供給別人調用的,我們可以在SQL語句中調用函數、在賦值語句中調用函數、在表達式中調用函數。下面就說幾種常用的調用方式。

  • 在SQL語句中調用函數

    select func_test from dual; -- 函數無參數,或參數有默認值時,可以不寫括號select func_test(30) from dual; -- 函數有參數,並且沒有默認值時,必須傳遞參數

  • 這樣就是直接在SQL語句中調用函數,就可以直接得到函數的返回值。

  • 在賦值語句中調用函數很多時候,我們需要將函數的返回值賦值給一個變量保存起來,我們這樣直接調用。
    -- Created on 8/30/2015 by JELLY 
    declare 
        -- Local variables here
        i integer;begin
        -- Test statements here
        i := func_test();
        dbms_output.put_line(i);end;
  • 在表達式中調用函數又或有的時候,我們需要在表達式中調用函數,這也沒有任何問題。
    -- Created on 8/30/2015 by JELLY 
    declare 
        -- Local variables here
        i integer;begin
        -- Test statements here
        if func_test(200) > 100 then
            dbms_output.put_line('Larger than 100');
        else
            dbms_output.put_line('Less than 100');
        end if;end;
 

刪除函數

當發現有一個函數寫的非常垃圾時,實在不能忍受這樣的垃圾代碼時,你可以直接干掉它。

drop function func_test;

現在你的世界變的清靜了。

 

總結

總結了這麼多,其實你會發現定義一個函數就像在C++、Java中定義一個函數那樣簡單,前提是你需要知道你要干什麼。將之前學習到的PL/SQL知識在編寫函數時盡情的運用出來吧。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved