站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        mysql函數(shù)中可以用游標(biāo)嗎

        mysql函數(shù)中可以用游標(biāo)。在mysql中,游標(biāo)只能用于存儲過程和函數(shù);存儲過程或函數(shù)中的查詢有時會返回多條記錄,而使用簡單的SELECT語句,沒有辦法得到第一行、下一行或前十行的數(shù)據(jù),這時可以使用游標(biāo)來逐條讀取查詢結(jié)果集中的記錄。使用游標(biāo)可以對檢索出來的數(shù)據(jù)進行前進或者后退操作,主要用于交互式應(yīng)用,如用戶滾動屏幕上的數(shù)據(jù)。

        mysql函數(shù)中可以用游標(biāo)嗎

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

        mysql函數(shù)中可以用游標(biāo)。

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

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

        游標(biāo)的特性:

        • 能夠標(biāo)記游標(biāo)為只讀,使數(shù)據(jù)能讀取,但不能更新和刪除

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

        • 能標(biāo)記某些列為可編輯的,某些列為不可編輯的

        • 規(guī)定范圍,使游標(biāo)對創(chuàng)建它的特定請求(如存儲過程)或?qū)λ姓埱罂稍L問

        • 只是DBMS對檢索出的數(shù)據(jù)(而不是指出表中活動數(shù)據(jù))進行復(fù)制,使數(shù)據(jù)在游標(biāo)打開和訪問期間不變化

        在 MySQL 中,游標(biāo)只能用于存儲過程和函數(shù)。

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

        關(guān)系數(shù)據(jù)庫管理系統(tǒng)實質(zhì)是面向集合的,在 MySQL 中并沒有一種描述表中單一記錄的表達形式,除非使用 WHERE 子句來限制只有一條記錄被選中。所以有時我們必須借助于游標(biāo)來進行單條記錄的數(shù)據(jù)處理。

        1. 聲明游標(biāo)

        MySQL 中使用 DECLARE 關(guān)鍵字來聲明游標(biāo),并定義相應(yīng)的 SELECT 語句,根據(jù)需要添加 WHERE 和其它子句。其語法的基本形式如下:

        DECLARE cursor_name CURSOR FOR select_statement;

        其中,cursor_name 表示游標(biāo)的名稱;select_statement 表示 SELECT 語句,可以返回一行或多行數(shù)據(jù)。

        例 1

        下面聲明一個名為 nameCursor 的游標(biāo),代碼如下:

        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 游標(biāo),游標(biāo)只局限于存儲過程中,存儲過程處理完成后,游標(biāo)就消失了。

        2. 打開游標(biāo)

        聲明游標(biāo)之后,要想從游標(biāo)中提取數(shù)據(jù),必須首先打開游標(biāo)。在 MySQL 中,打開游標(biāo)通過 OPEN 關(guān)鍵字來實現(xiàn),其語法格式如下:

        OPEN cursor_name;

        其中,cursor_name 表示所要打開游標(biāo)的名稱。需要注意的是,打開一個游標(biāo)時,游標(biāo)并不指向第一條記錄,而是指向第一條記錄的前邊。

        在程序中,一個游標(biāo)可以打開多次。用戶打開游標(biāo)后,其他用戶或程序可能正在更新數(shù)據(jù)表,所以有時會導(dǎo)致用戶每次打開游標(biāo)后,顯示的結(jié)果都不同。

        3. 使用游標(biāo)

        游標(biāo)順利打開后,可以使用 FETCH…INTO 語句來讀取數(shù)據(jù),其語法形式如下:

        FETCH cursor_name INTO var_name [,var_name]...

        上述語句中,將游標(biāo) cursor_name 中 SELECT 語句的執(zhí)行結(jié)果保存到變量參數(shù) var_name 中。變量參數(shù) var_name 必須在游標(biāo)使用之前定義。使用游標(biāo)類似高級語言中的數(shù)組遍歷,當(dāng)?shù)谝淮问褂糜螛?biāo)時,此時游標(biāo)指向結(jié)果集的第一條記錄。

        MySQL 的游標(biāo)是只讀的,也就是說,你只能順序地從開始往后讀取結(jié)果集,不能從后往前,也不能直接跳到中間的記錄。

        4. 關(guān)閉游標(biāo)

        游標(biāo)使用完畢后,要及時關(guān)閉,在 MySQL 中,使用 CLOSE 關(guān)鍵字關(guān)閉游標(biāo),其語法格式如下:

        CLOSE cursor_name;

        CLOSE 釋放游標(biāo)使用的所有內(nèi)部內(nèi)存和資源,因此每個游標(biāo)不再需要時都應(yīng)該關(guān)閉。

        在一個游標(biāo)關(guān)閉后,如果沒有重新打開,則不能使用它。但是,使用聲明過的游標(biāo)不需要再次聲明,用 OPEN 語句打開它就可以了。

        如果你不明確關(guān)閉游標(biāo),MySQL 將會在到達 END 語句時自動關(guān)閉它。游標(biāo)關(guān)閉之后,不能使用 FETCH 來使用該游標(biāo)。

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 精品三级AV无码一区| 精品精品国产自在久久高清| 97久久超碰国产精品2021| 国产亚洲精品成人a v小说| 国产精品一久久香蕉产线看| 日韩精品无码一区二区三区不卡 | 久草热8精品视频在线观看| 精品国产日产一区二区三区| 日韩精品无码中文字幕一区二区| 久久亚洲av无码精品浪潮| 白浆都出来了视频国产精品 | 国产精品亚洲专区在线观看| 日本VA欧美VA精品发布| 亚洲欧美精品午睡沙发| 欧美精品成人3d在线| 九九热这里只有国产精品| 国产精品秘入口福利姬网站 | 日韩精品区一区二区三VR| 最新国产精品拍自在线观看| 亚洲A∨精品一区二区三区| 精品久久久久久久久久久久久久久| 午夜精品成年片色多多| 久久精品国产99国产电影网 | 亚洲第一区精品日韩在线播放| 久久国产精品波多野结衣AV| 国产精品电影在线| 国产成人精品久久亚洲| 国产精品人人做人人爽| 国产伦精品一区二区三区视频猫咪| 亚洲国产精品嫩草影院| 久久精品国产精品国产精品污| 国产亚洲精品a在线观看app| 国产精品久久久久久搜索| 国产精品久久久久天天影视| 国产精品欧美一区二区三区不卡| 91精品国产福利在线导航| 97视频在线观看这里只有精品 | 久久亚洲中文字幕精品一区四| 精品午夜国产人人福利| 久久久WWW成人免费精品| 免费国产在线精品一区|