Oracle數據庫學習之存儲過程--提高程序執行的效率


  存儲過程是Oracle開發者在數據轉換或查詢報表時經常使用的方式之一。它就是想編程語言一樣一旦運行成功,就可以被用戶隨時調用,這種方式極大的節省了用戶的時間,也提高了程序的執行效率。存儲過程在數據庫開發中使用比較頻繁,它有着普通SQL語句不可替代的作用。所謂存儲過程,就是一段存儲在數據庫中執行某種功能的程序。其中包含一條或多條SQL語句,但是它的定義方式和PL/SQL中的塊、包等有所區別。存儲過程可以通俗地理解為是存儲在數據庫服務器中的封裝了一段或多段SQL語句的PL/SQL代碼塊。在數據庫中有一些是系統默認的存儲過程,那么可以直接通過存儲過程的名稱進行調用。另外,存儲過程還可以在編程語言中調用,如Java、C#等。

  存儲過程的作用

  存儲過程編寫相對復雜,但還是有很多人在用存儲過程,因為它有着一系列的優點:

  • 簡化復雜的操作。存儲過程可以把需要執行的多條SQL語句封裝到一個獨立單元中,用戶只需調用這個單元就能達到目的。這樣就實現了一人編寫多人調用。
  • 增加數據獨立性。與視圖的效果相似,利用存儲過程可以把數據庫基礎數據和程序(或用戶)隔離開來,當基礎數據的結構發生變化時,可以修改存儲過程,這樣對程序來說基礎數據的變化是不可見的,也就不需要修改程序代碼了。
  • 提高安全性。使用存儲過程有效降低了錯誤出現的幾率。如果不使用存儲過程要實現某項操作可能需要執行多條單獨的SQL語句,而過多的執行步驟很可能造成更高的出現錯誤幾率。
  • 提高性能。完成一項復雜的功能可能需要多條SQL語句,同時SQL每次執行都需要編譯,而存儲過程可以包含多條SQL語句,而且創建后只需要編譯一次,以后就可以直接調用。

存儲過程的語法

  存儲過程的創建和視圖相比稍微復雜,但也有固定模式。

create or replace procedure  procedure_name
     [parameter-name  in datatype := default  expression,......]
        { IS | AS}
        BODY;

其中,各項參數的含義:

  or  replace :表示如果指定的過程存在,則覆蓋同名的存儲過程。

  procedure_name :創建存儲過程的名稱

  parameter_name:表示存儲過程中的參數名稱

  IN  datatype := default  expression  :表示輸入參數的數據類型和默認值

  IS|AS  :連接詞

  BODY  :表示函數體,是存儲過程的具體操作部分,通常在begin...end中。

        


免責聲明!

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



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