Oracle--plsql游標創建和使用


為什么要游標:

先看這個:


這個SELECT語句可能返回多條記錄,所以這個賦值語句可能是錯誤的。所以游標可以發揮作用了。


什么是游標?

 游標(cursor)是Oracle系統在內存中開辟的一個工作區,在其中存放SELECT語句返回的查詢結果。 

游標的分類:

隱式游標:PL/SQL隱式建立並自動管理這一游標。隱式游標也叫做SQL游標。 對於SQL游標,不能對其顯式地執行                     OPEN、CLOSE和FETCH語句,但是可以使用游標屬性從最近執行的SQL語句中獲取信息。

顯式游標:由程序員顯式說明及控制,用於從表中取出多行數據,並將多行數據一行一行單獨處理。


隱式游標:

  • 由Oracle在內部聲明 
  • 由Oracle自行管理游標 
  • 可以使用游標屬性從最近執行的SQL語句中獲取信息 
  • 用於處理DML語句以及返回單行的查詢
隱式游標屬性:


隱式游標舉例:

返回所刪除行的數量

顯式游標:由用戶顯式聲明,查詢返回多行記錄

  • 使用游標時,select語句查詢的結果可以是單條記錄,多條記錄,也可以是零條記錄。
  • 游標工作區中,存在着一個指針(POINTER),在初始狀態它指向查詢結果的首記錄。
  • 要訪問查詢結果的所有記錄,可以通過FETCH語句,進行指針的移動來實現。
  • 使用游標進行操作,包括定義游標、打開游標、提取數據以及關閉游標幾步。


聲明:命名游標,定義在游標中執行查詢的結構

打開:OPEN 語句執行查詢並綁定每一個引用到的變量。滿足查詢條件的行稱為活動集(activeset )。

獲取:通過游標從活動集中獲得數據,在幻燈片的流程圖中,每一次提取之后都要測試游標中是否還有當前行。如果沒有要處理的行,就可以關閉游標了。

關閉:CLOSE 語句釋放活動集中的所有行。這之后,就可以重新打開這個游標來創建一個新的活動集。


游標聲明:



顯示游標屬性:



%ISOPEN屬性
僅當游標處於打開狀態時才可以從中提取數據。
在執行提取操作之前,使用 %ISOPEN 游標屬性,檢測游標是否已被打開

將提取的行值存入一個 PL/SQL RECORD 中能方便地處理活動集中的行。

帶有參數的游標:

FORUPDATE 子句

在事務執行期間可以顯式鎖定以拒絕訪問。
在更新或刪除行時要鎖定該行。

WHERECURRENT OF 子句
更新或刪除游標中的當前行數據


首先要在游標中使用 FOR UPDATE 子句鎖定行
使用 WHERE CURRENT OF 子句從顯式游標中引用當前行

使用子查詢的游標

子查詢就是在別的SQL數據處理語句中的查詢語句,通常它們被用圓括號括起來。當需要的時候,子查詢提供一個值或結果集給數據處理語句。

一般子查詢經常會被用在 WHERE 子句中。同樣,也可以在FROM子句中使用子查詢。





免責聲明!

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



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