oracle存儲過程和存儲函數


  存儲過程

  1.存儲過程簡介

    下面先來簡單介紹一下oracle的存儲過程的語法,如下:

    

1 create or replace procedure Tony_Process
2 (
3     num in number,
4     sum out number
5 )
6 as
7 begin
8     null;
9 end;
存儲過程簡單語法

 

 

     下面簡單介紹一下使用存儲過程的優點:

    (1)使用方便。創建存儲是將命名對象直接放入到數據庫中,因為代碼不保存在本地,用戶可以在任何一個客戶機上使用或調用存儲過程。

    (2)安全性。存儲過程是由數據庫提供的安全保證,用戶要想使用存儲過程必須先經過存儲過程的所有者授權用戶才能調用或者修改存儲過程。

    (3)傳遞性。可以給存儲過程設置帶參或者多參,亦或者沒有返回值類型。存儲過程的返回值必須通過參數帶回(out輸出類型)。

     存儲過程與存儲函數的區別:

    存儲函數可以使用 Return返回一個函數,存儲過程不可以。

 

  2.定義並使用變量
     PL/SQL有四種類型:標量類型,復合類型,引用類型 (reference),LOB(Large Obejct)類型

    一、標量類型
  最常用的就是標量類型,是指只能存放單個數值的變量,包括數字類型、字符類型、日期類型和布爾類型,每種類型又包含相應的子類型。如“:=”把“=”取代,使用方法如下:v_rate integer :1;

      二、復合變量:
  用於存放多個值的變量稱為復合變量,包括PL/SQL記錄,PL/SQL表,嵌套表和VARRAY四種類型 

      三、引用變量(reference)
  類似於C++中的指針或者JAVA中引用的概念,用於存放數值指針的變量,使用此變量,可以使得應用程序共享相同對象,降低占用空間。此類有兩種類型:游標(REF CURSOR)和對象類型(REF OBJECT)

     四、LOB類型
  LOB類型是指用於存儲大批量數據的變量,包括內部的3種(CLOB,BLOB,NCLOB)和外部LOB(BFILE)。
  CLOB,NCLOB用於存儲大量的字符數據。
  BLOB用於存儲大批量二進制數據(如圖象)。

  

  3.給用戶設置權限

    1.1 用戶只能修改的權限,語法如下:

      grant execute on 存儲過程名稱 to 用戶名;

    1.2用戶只能查詢的權限:

      grant select on 存儲過程名稱 to 用戶名;

   4.引用存儲過程的方式

      (1)execute方法后跟存儲過程名,execute也可以簡寫為exec。

      (2)begin  end;塊中寫存儲過程名稱進行調用。

  存儲函數

  1.簡單介紹存儲函數

  存儲函數,也是一種命名的存儲程序,可傳入參數,並進行一系列的操作。存儲函數與存儲過程結構類似,與存儲過程不同的是,函數必須要跟一個return語句,用於返回函數值。

  2.語法

   

 1 create or replace function Tony_Function
 2 (
 3     num in number ,
 4     sum out number
 5 )
 6 return number
 7 as 
 8 begin
 9     null;
10     return 0;
11 end;
存儲函數基本語法

  存儲過程與存儲函數的int(輸入參數)和out(輸出參數)有什么區別?

  (1)存儲過程和存儲函數都可以有out參數;

  (2)存儲過程和存儲函數都可以有多個out參數;

  (3)存儲過程可以使用out參數來實現返回值;

  (4)存儲函數使用return來實現返回值;

  ps:如果只有一個返回值使用存儲函數,有多個返回值則使用存儲函數。

 

  在應用程序下調用存儲過程或函數。下面是具體步驟。

  1.1首先,在項目中引用

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM