国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql函數中可不可以用游標

2024-07-24 12:34:19
字體:
來源:轉載
供稿:網友
  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 來使用該游標。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清流县| 乌拉特后旗| 屏东县| 永昌县| 莱芜市| 永宁县| 安泽县| 黔江区| 浦东新区| 保亭| 凤凰县| 孟连| 静乐县| 大庆市| 盐城市| 乌拉特后旗| 怀远县| 渑池县| 大渡口区| 武强县| 涞水县| 漳州市| 鹿邑县| 板桥市| 南昌市| 新蔡县| 绵阳市| 集贤县| 通渭县| 垦利县| 淳化县| 万荣县| 兴国县| 天柱县| 湾仔区| 九寨沟县| 潢川县| 灵石县| 巫溪县| 武强县| 揭阳市|