在數據庫中使用遊標

1遊標

有時,需要在檢索出來的行中前進或後退一行或多行。這就是使用遊標的原因。
遊標(cursor)是一個存儲在MySQL服務器上的數據庫查詢,它不是一條SELECT語句,而是被該語句檢索出來的結果集。在存儲了遊標之後,應用程序可以根據需要滾動混着瀏覽其中的數據

遊標主要用於交互式應用,其中用戶需要滾動屏幕上的數據,並對數據進行瀏覽或做出更改。

2使用遊標

使用遊標涉及幾個明確的步驟

  1. 在能夠使用遊標前,必須聲明(定義)它。這個過程實際上沒有檢索數據,它只是定義要使用的SELECT語句。
  2. 一旦聲明後,必須打開遊標以供使用。這個過程用前面定義的SELECT語句把數據實際檢索出來。
  3. 對於填有數據的遊標,根據需要取出(檢索)各行
  4. 在結束遊標使用時,必須關閉遊標

在聲明遊標後,可根據需要頻繁地打開和關閉遊標。在遊標打開後,可根據需要頻繁地執行取操作。

2.1創建遊標

遊標用DECLARE語句創建,DECLARE命名遊標,並定義相應的SELECT語句,根據需要帶WHERE和其他子句。

實例說話

DECLARE CustCursor CURSOR 
FOR 
SELECT * FROM Customers 
WHERE cust_email IS NULL;

分析:DELCARE語句用來定義和命名遊標,這裏爲CustCursor。SELECT語句定義一個包含沒有電子郵件地址(NULL值)的所有顧客的遊標。定義遊標後就可以打開它了。

2.2使用遊標

使用OPEN CURSOR語句打開遊標

OPEN CURSOR CustCursor

在處理OPEN CURSOR語句時,執行查詢,存儲檢索出的數據以供瀏覽和滾動。

使用FETCH語句訪問遊標

DECLARE TYPE CustCursor IS REF CURSOR 
    RETURN Customers%ROWTYPE; 
DECLARE CustRecord Customers%ROWTYPE 
BEGIN 
    OPEN CustCursor; 
    FETCH CustCursor INTO CustRecord; 
    CLOSE CustCursor; 
END; 

分析:FETCH用來檢索當前行(自動從第一行開始),放到生命的變量CustRecord中。對於檢索出來的數據不做任何處理

2.3關閉遊標

關閉遊標使用CLOSE CustCursor,CLOSE釋放遊標使用的所有內部內存和資源,因此在每個遊標不再需要時都應該關閉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章