mysql存儲過程的游標是什么

mysql存儲過程中,游標也稱為光標,是一個存儲在DBMS服務(wù)器上的數(shù)據(jù)庫查詢,是檢索操作返回一組結(jié)果集,一般用于對檢索出來的數(shù)據(jù)進行前進或者后退操作。

mysql存儲過程的游標是什么

本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。

在 MySQL 中,存儲過程或函數(shù)中的查詢有時會返回多條記錄,而使用簡單的 select 語句,沒有辦法得到第一行、下一行或前十行的數(shù)據(jù),這時可以使用游標來逐條讀取查詢結(jié)果集中的記錄。游標在部分資料中也被稱為光標。

游標簡介

1、游標:也稱為光標,是一個存儲在DBMS服務(wù)器上的數(shù)據(jù)庫查詢,它不是一條select語句,而是被該語句檢索出來的結(jié)果集。

2、用途:對檢索出來的數(shù)據(jù)進行前進或者后退操作,主要用于交互式應(yīng)用,如用戶滾動屏幕上的數(shù)據(jù)

3、特性:

  • 能夠標記游標為只讀,使數(shù)據(jù)能讀取,但不能更新和刪除
  • 能控制可以執(zhí)行的定向操作(向前、向后、第一、最后、絕對位置、相對位置等)
  • 能標記某些列為可編輯的,某些列為不可編輯的
  • 規(guī)定范圍,使游標對創(chuàng)建它的特定請求(如存儲過程)或?qū)λ姓埱罂稍L問
  • 只是DBMS對檢索出的數(shù)據(jù)(而不是指出表中活動數(shù)據(jù))進行復(fù)制,使數(shù)據(jù)在游標打開和訪問期間不變化

4、支持游標的DBMS:DB2、mariadb、MySQL 5、SQL Server、sqliteoraclepostgresql,而microsoft Access不支持

5、游標對基于Web的應(yīng)用用處不大(ASP、ASP.net、ColdFusion、phppythonruby、JSP等),大多數(shù)Web應(yīng)用開發(fā)人員不使用游標

6、使用:

  • 聲明游標: DECLARE cursor_name CURSOR for SELECT * FROM table_name;? // 還沒有檢索數(shù)據(jù)
--?MySQL游標的聲明 DECLARE?cursor_name?CURSOR?FOR?select_statement  --?SQL?Server游標的聲明 DECLARE?cursor_name?CURSOR?FOR?select_statement?[FOR?[READ?ONLY?|?UPDATE?{[co?lumn_list]}]]  --?Oracle游標的聲明 DECLARE?CORSOR?cursor_name?IS?{select_statement}
  • 打開游標:OPEN cursor_name; // 開始檢索數(shù)據(jù),即指定游標的SELECT語句被執(zhí)行,并且查詢的結(jié)果集被保存在內(nèi)存里的特定區(qū)域。
--?MySQL打開游標 OPEN?cursor_name   --?SQL?Server打開游標 OPEN?cursor_name   --?Oracle打開游標 OPEN?cursor_name?[param1?[,?param2]]
  • 獲取數(shù)據(jù):FETCH cursor_name into var1,var2,…,varn; // 當游標cursor_name檢索完數(shù)據(jù)后,只有等到下一次fetch時才會觸發(fā)結(jié)束的標志
--?MySQL游標獲取數(shù)據(jù) FETCH?cursor_name?INTO?var1_name?[,?var2_name]?...   --?SQL?Server游標獲取數(shù)據(jù) FETCH?NEXT?FROM?cursor_name?[INTO?fetch_list]   --?Oracle游標獲取數(shù)據(jù) FETCH?cursor_name??{INTO?:?host_var1?[[INDICATOR]?:?indicator_var1]?[,?:?host_var2?[[INDICATOR]?:?indicator_var2]]?|?USING?DESCRIPTOR?DESCRIPTOR}
  • 關(guān)閉游標:CLOSE cursor_name;
-- MySQL關(guān)閉游標,會主動釋放資源,所以不需要DEALLOCATE語句 CLOSE cursor_name   -- SQL Server關(guān)閉游標和釋放資源 CLOSE cursor_name DEALLOCATE cursor_name   -- Oracle關(guān)閉游標,會主動釋放資源,所以不需要DEALLOCATE語句 CLOSE cursor_name

【相關(guān)推薦:mysql視頻教程

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊12 分享