plsql知識梳理-存儲過程和java調用

1 存儲過程介紹java

         存儲過程是指用於特定操做的pl/sql塊,是由流控制和sql語句書寫的過程。
         存儲過程經編譯和sql優化後存儲在數據庫服務器中,使用時候只須要調用便可。sql

2 存儲過程的優勢數據庫

       1 使用存儲過程,能夠實現存儲過程設計和編碼工做分開進行,只要將存儲過程名,參數,以及返回信息告訴編碼人員便可。安全

       2 使用存儲過程能夠減小sql注入式攻擊,提供系統的安全性。服務器

       3 執行存儲過程的用戶要具備必定的權限才能使用存儲過程。沒有數據操做權限的用戶只能在系統控制下間接的存取數據。oracle

       4 存儲過程的代碼直接放在了數據庫中,通常由客戶端直接經過存儲過程的名稱來進行調用,簡化客戶端的操做邏輯。優化

3 存儲過程的語法編碼

          存儲過程 包含三部分 聲明,執行部分,異常。能夠有無參數的或帶參數的存儲過程。spa

         存儲過程的定義:設計

          Create  [or replace]  procedure procedure_name

          [(parameter1[mode] datatype1,parameter2 [model] datatype2…)]

          IS[As]

          Begin

           Pl/sql block;

          End [procedure_name]

       其中: procedure_name是存儲過程的名字,parameter用於指定參數,model用於指定參數模式,datatype用於指定參數類型, IS [AS]用於開始PL/SQL代碼塊。

       注:1, 當定義存儲過程的參數時,只能指定數據類型,不能指定數據長度。

               2, 創建存儲過程時,既能夠指定存儲過程的參數,也能夠不提供任何參數。

               3, 存儲過程的參數主要有三種類型:輸入參數(IN)、輸出參數(OUT)、輸入輸出參數(IN OUT),其中IN用於接收調用環境的輸入參數,OUT用於將輸出數據傳遞到調用環境,IN OUT不只要接收數據,並且要輸出數據到調用環境。

4  一個簡單的存儲過程+調試

  

寫一個存儲過程--修改其中的數據

select count(*)  from table1 where name='weiguo' 的查詢結果是 count(*)=0

 

若是涉及到兩個或以上的輸入參數,以下圖:

5  存儲過程和java程序的接口操做

     5.1   無返回值的存儲過程

           

 

   查詢數據庫-顯示

     5.2  有返回值的存儲過程(非列表-單個出參)

    

 

 

 

  注意,這裏的proc.getString(2)中的數值2並不是任意的,而是和存儲過程當中的out列對應的,若是out是在第一個位置,那就是proc.getString(1),若是是第三個位置,就是proc.getString(3),固然也能夠同時有多個返回值,那就是再多加幾個out參數了。

  因爲oracle存儲過程沒有返回值,它的全部返回值都是經過out參數來替代的,列表一樣也不例外,但因爲是集合,因此不能用通常的參數,必需要用pagkage了。

 返回列表的存儲過程對我來講,不經常使用。要經過建包+遊標的方式來實現。

相關文章
相關標籤/搜索