首頁  >  文章  >  資料庫  >  mysql函數中可以用遊標嗎

mysql函數中可以用遊標嗎

青灯夜游
青灯夜游原創
2022-06-13 18:47:252642瀏覽

mysql函數中可以用遊標。在mysql中,遊標只能用於預存程序和函數;預存程序或函數中的查詢有時會傳回多個記錄,而使用簡單的SELECT語句,沒有辦法得到第一行、下一行或前十行的數據,這時可以使用遊標來逐條讀取查詢結果集中的記錄。使用遊標可以對檢索出來的資料進行前進或後退操作,主要用於互動式應用,如使用者滾動螢幕上的資料。

mysql函數中可以用遊標嗎

本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。

mysql函數中可以用遊標。

遊標:也稱為遊標,是儲存在DBMS伺服器上的資料庫查詢,它不是一條select語句,而是被該語句檢索出來的結果集。

遊標的用途:對檢索出來的資料進行前進或後退操作,主要用於互動式應用,如使用者捲動螢幕上的資料

遊標的特性:

  • 能夠標記遊標為唯讀,使資料能讀取,但不能更新和刪除

  • #能控制可以執行的定向操作(向前、向後、第一、最後、絕對位置、相對位置等)

  • 能標記某些列為可編輯的,某些列為不可編輯的

  • 規定範圍,使遊標對創建它的特定請求(如預存程序)或對所有請求可存取

  • 只是DBMS對檢索出的資料(而不是指出表中活動資料)進行複製,使資料在遊標開啟和存取期間不變更

#在MySQL 中,遊標只能用於預存程序和函數。

在MySQL 中,預存程序或函數中的查詢有時會傳回多筆記錄,而使用簡單的SELECT 語句,沒有辦法得到第一行、下一行或前十行的數據,這時可以使用遊標來逐條讀取查詢結果集中的記錄。遊標在部分資料中也被稱為遊標。

關聯式資料庫管理系統實質是面向集合的,在 MySQL 中並沒有一種描述表中單一記錄的表達形式,除非使用 WHERE 子句來限制只有一筆記錄被選取。所以有時我們必須藉助於遊標來進行單一記錄的資料處理。

1. 宣告遊標

MySQL 中使用 DECLARE 關鍵字來宣告遊標,並定義對應的 SELECT 語句,根據需要新增 WHERE 和其它子句。其語法的基本形式如下:

DECLARE cursor_name CURSOR FOR select_statement;

其中,cursor_name 表示遊標的名稱;select_statement 表示 SELECT 語句,可以傳回一行或多行資料。

範例1

下方宣告一個名為nameCursor 的遊標,程式碼如下:

mysql> DELIMITER //
mysql> CREATE PROCEDURE processnames()
    -> BEGIN
    -> DECLARE nameCursor CURSOR
    -> FOR
    -> SELECT name FROM tb_student;
    -> END//
Query OK, 0 rows affected (0.07 sec)

以上語句定義了nameCursor 遊標,遊標只限於儲存過程中,儲存過程處理完成後,遊標就消失了。

2. 開啟遊標

聲明遊標之後,要從遊標中擷取數據,必須先開啟遊標。在 MySQL 中,開啟遊標透過 OPEN 關鍵字來實現,其語法格式如下:

OPEN cursor_name;

其中,cursor_name 表示所要開啟遊標的名稱。要注意的是,開啟一個遊標時,遊標並不是指向第一筆記錄,而是指向第一筆記錄的前邊。

在程式中,一個遊標可以開啟多次。使用者開啟遊標後,其他使用者或程式可能正在更新資料表,所以有時會導致使用者每次開啟遊標後,顯示的結果都不同。

3. 使用遊標

遊標順利開啟後,可以使用FETCH...INTO 語句來讀取數據,其語法形式如下:

FETCH cursor_name INTO var_name [,var_name]...

上述語句中,將遊標cursor_name 中SELECT 語句的執行結果儲存到變數參數var_name 中。變數參數 var_name 必須在遊標使用前定義。使用遊標類似高階語言中的陣列遍歷,當第一次使用遊標時,此時遊標指向結果集的第一筆記錄。

MySQL 的遊標是唯讀的,也就是說,你只能順序地從開始往後讀取結果集,不能從後往前,也不能直接跳到中間的記錄。

4. 關閉遊標

遊標使用完畢後,要及時關閉,在MySQL 中,使用CLOSE 關鍵字關閉遊標,其語法格式如下:

CLOSE cursor_name;

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

在一個遊標關閉後,如果沒有重新打開,則不能使用它。但是,使用聲明過的遊標不需要再次聲明,用 OPEN 語句打開它就可以了。

如果你不明確關閉遊標,MySQL 會在到達 END 語句時自動關閉它。遊標關閉之後,不能使用 FETCH 來使用該遊標。

【相關推薦:mysql影片教學

#

以上是mysql函數中可以用遊標嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn