天天看點

存儲過程 觸發器 遊标

1.存儲過程

存儲過程是一系列預先編輯好的、能實作特定資料操作功能的SQL代碼集。

存儲過程的好處:

(1)重複使用。存儲過程可以重複使用,進而減少資料庫開發人員的工作量

(2)提高性能。存儲過程在建立的時候就進行了編譯,将來使用的時候就不用再編譯。一般的SQL語句使用一次就編譯一次,是以使用存儲過程提高了效率

(3)減少網絡流量。存儲過程位于伺服器上,調用的時候隻需要傳遞存儲過程的名稱以及參數就可以了,是以減低了網絡傳輸的運輸量

(4)安全性。參數化的存儲過程可以防止SQL注入攻擊,而且可以将Grant、Deny、以及Revoke權限應用于存儲過程

2.觸發器

觸發器是一種實施複雜資料完整性的特殊存儲過程,在對表或視圖執行update、insert或delete語句時自動觸發執行,以防止對資料進行不正确、未授權或不一緻的參數

3.遊标

遊标是一段私有的SQL工作區,也就是一段記憶體區域,用于暫時存放受SQL語句影響到的資料。通俗了解就是将受影響的資料暫時放到了一個記憶體區域的虛表中,而這個虛表就是遊标

遊标是一種處理資料的方法,為了檢視或者處理結果集中的資料,遊标提供了在結果集中向前或者向後浏覽資料的能力

作用

作用是什麼?

​ 由于對資料庫的操作我們會暫時放在遊标中,隻要不送出,我們就可以根據遊标中内容進行復原,在一定意義有利于資料庫的安全。

類型:

​ 1,隐式遊标:增删改等操作Oracle都會自動建立遊标,暫時儲存操作結果,也就是能夠復原的操作都會引發遊标的建立。

​ 2,顯示遊标:由開發人員通過程式顯式控制,用于從表中取出多行資料并将多行資料一行一行的單獨進行處理

(1)建立遊标

(2)打開遊标

(3)讀取資料

(4)資料操作

(5)關閉和釋放遊标

declare
          --定義記錄類型的變量
          v_user user%rowtype;
          --1,利用cursor關鍵字聲明遊标
          cursor user_cur is
            select * from user;
        begin
          --,打開遊标
          open user_cur;
          --3,利用fetch讀取資料
          fetch user_cur
            into v_user;
          while user_cur%found loop
            dbms_output.put_line(v_user.userName);
            fetch user_cur
              into v_user;
          end loop;
          --4,釋放遊标
          close user_cur;
        end;
           

http://blog.csdn.net/liujiahan629629/article/details/18014051