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