一、游標(用來存儲多條查詢數據的一種數據結構(結果集),它有一個指針,用來從上往下移動,從而達到遍歷每條記錄的作用)
如何編寫一個游標?
1、聲明游標
declare cursor cur_name
is + 想要進行的操作;
定義數據的方式type/rowtype;
2、打開游標
open cur_name;
3、提取數據
fetch
4、關閉游標
eg:提取t_emp中的數據
declaer cursor cur
is select * from t_emp;
r_emp t_emp%rowtype;
begin
open cur;
fetch cur into r_emp;
dbms_output.put_line('id:'||r_emp.id);
close;
end;
如何判斷是否到了結果集的尾部,
oracle中,對於游標的屬性,它通過屬性值來判斷的
1)%notfound 到了游標尾部,沒有記錄了,就返回true
2)%found 用於檢驗游標是否成功,通常在fetch語句前使用,當游標按照條件查詢一條記錄是,返回true
3)%isopen 判斷游標是否打開
4)rowcount 獲得影響的行數
二、游標的分類:
1、靜態游標 在執行前,明確知道sql語句游標
a) 顯示游標
用戶自己寫的sql語句,編譯時能明確知道sql語句
b) 隱式游標
Dml(增、刪、改、查詢單條記錄)會用隱式游標,該變量名不需要用戶自己聲明,
它由系統幫我們定義,叫sql。
影視游標的使用:通過%rowcour判斷是有使用了。 使用時不要字機定義應是游標,它由系統定義
2、動態游標 在執行前不知道sql語句游標,執行時才知道sql語句的游標。
a) 強類型游標
b) 弱類型游標
三、游標的作用:(拿出結果集中的一行)
游標是映射在結果集中一行數據上的位置實體,有了游標,用戶就可以訪問結果集中的任意一行數據了,
將游標放置到某行后,即可對該行數據進行操作,例如提取當前行的數據等。
游標實際上是一種能從包括多條數據記錄的結果集中每次提取一條記錄的機制。游標充當指針的作用。
盡管游標能遍歷結果中的所有行,但他一次只指向一行。
概括來講,SQL的游標是一種臨時的數據庫對象,即可以用來存放在數據庫表中的數據行副本,也可以指向存儲在數據庫中的數據行的指針。
游標提供了在逐行的基礎上操作表中數據的方法。
游標的一個常見用途就是保存查詢結果,以便以后使用。游標的結果集是由SELECT語句產生,如果處理過程需要重復使用一個記錄集,
那么創建一次游標而重復使用若干次,比重復查詢數據庫要快的多。