好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > mysql存儲過程之游標(DECLARE)原理與用法詳解

mysql存儲過程之游標(DECLARE)原理與用法詳解

熱門標簽:巫師三血與酒地圖標注 常州網(wǎng)絡(luò)外呼系統(tǒng)開發(fā) 安徽ai電話電銷機器人有效果嗎 400電話申請信用卡 銷售語音電話機器人 外呼系統(tǒng)電銷受騙 萊西市地圖標注 在哪里申請400電話 走過哪個省地圖標注

本文實例講述了mysql存儲過程之游標(DECLARE)原理與用法。分享給大家供大家參考,具體如下:

我們在處理存儲過程中的結(jié)果集時,可以使用游標,因為游標允許我們迭代查詢返回的一組行,并相應(yīng)地處理每行。mysql的游標為只讀,不可滾動和敏感三種模式,我們來看下:

  • 只讀:無法通過光標更新基礎(chǔ)表中的數(shù)據(jù)。
  • 不可滾動:只能按照select語句確定的順序獲取行。不能以相反的順序獲取行。 此外,不能跳過行或跳轉(zhuǎn)到結(jié)果集中的特定行。
  • 敏感:有兩種游標:敏感游標和不敏感游標。敏感游標指向?qū)嶋H數(shù)據(jù),不敏感游標使用數(shù)據(jù)的臨時副本。敏感游標比一個不敏感的游標執(zhí)行得更快,因為它不需要臨時拷貝數(shù)據(jù)。但是,對其他連接的數(shù)據(jù)所做的任何更改都將影響由敏感游標使用的數(shù)據(jù),因此,如果不更新敏感游標所使用的數(shù)據(jù),則更安全。 MySQL游標是敏感的。

我們可以在存儲過程,存儲函數(shù)和觸發(fā)器中使用MySQL游標,咱們先來看下使用DECLARE語句聲明的語法:

DECLARE cursor_name CURSOR FOR SELECT_statement;

我們要注意下,游標聲明必須在變量聲明之后。如果在變量聲明之前聲明游標,mysql將會發(fā)出一個錯誤,另外游標必須始終與SELECT語句相關(guān)聯(lián)。完事呢,我們來使用OPEN語句打開游標。OPEN語句初始化游標的結(jié)果集,因此我們必須在從結(jié)果集中提取行之前調(diào)用OPEN語句:

OPEN cursor_name;

然后,我們來使用FETCH語句來檢索光標指向的下一行,并將光標移動到結(jié)果集中的下一行:

FETCH cursor_name INTO variables list;

之后,我們就可以檢查是否有任何行記錄可用,然后再提取它。完事最后還要記得調(diào)用CLOSE語句來停用光標并釋放與之關(guān)聯(lián)的內(nèi)存:

CLOSE cursor_name;

我們要知道,當光標不再使用時,應(yīng)該關(guān)閉它。當我們使用mysql游標時,還必須聲明一個NOT FOUND處理程序來處理當游標找不到任何行時的情況。 因為每次調(diào)用FETCH語句時,游標會嘗試讀取結(jié)果集中的下一行。 當光標到達結(jié)果集的末尾時,它將無法獲得數(shù)據(jù),并且會產(chǎn)生一個條件。NOT FOUND處理程序用于處理這種情況,我們來看下它的語法結(jié)構(gòu):

DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1;

finished是一個變量,指示光標到達結(jié)果集的結(jié)尾。請注意,處理程序聲明必須出現(xiàn)在存儲過程中的變量和游標聲明之后。我們再來看下mysql游標的運行原理圖:

咱們接下來,就要開發(fā)一個存儲過程用來獲取employees表中所有員工的電子郵件列表。我們先來聲明一些變量,一個用于循環(huán)員工電子郵件的游標和一個NOT FOUND處理程序:

DECLARE finished INTEGER DEFAULT 0;
DECLARE email varchar(255) DEFAULT "";
-- declare cursor for employee email
DEClARE email_cursor CURSOR FOR
 SELECT email FROM employees;
-- declare NOT FOUND handler
DECLARE CONTINUE HANDLER
FOR NOT FOUND SET finished = 1;
接下來,使用OPEN語句打開email_cursor:
OPEN email_cursor;

然后,迭代電子郵件列表,并使用分隔符(;)連接每個電子郵件:

get_email: LOOP
 FETCH email_cursor INTO v_email;
 IF v_finished = 1 THEN
 LEAVE get_email;
 END IF;
 -- build email list
 SET email_list = CONCAT(v_email,";",email_list);
END LOOP get_email;

之后,我們在循環(huán)中,使用v_finished變量來檢查列表中是否有任何電子郵件來終止循環(huán),完事呢,使用CLOSE語句關(guān)閉游標:

CLOSE email_cursor;

我們來看下build_email_list存儲過程所有代碼:

DELIMITER $$
CREATE PROCEDURE build_email_list (INOUT email_list varchar(4000))
BEGIN
 DECLARE v_finished INTEGER DEFAULT 0;
    DECLARE v_email varchar(100) DEFAULT "";
 -- declare cursor for employee email
 DEClARE email_cursor CURSOR FOR
 SELECT email FROM employees;
 -- declare NOT FOUND handler
 DECLARE CONTINUE HANDLER
    FOR NOT FOUND SET v_finished = 1;
 OPEN email_cursor;
 get_email: LOOP
 FETCH email_cursor INTO v_email;
 IF v_finished = 1 THEN
 LEAVE get_email;
 END IF;
 -- build email list
 SET email_list = CONCAT(v_email,";",email_list);
 END LOOP get_email;
 CLOSE email_cursor;
END$$
DELIMITER ;

我們來使用以下腳本測試build_email_list存儲過程:

SET @email_list = "";
CALL build_email_list(@email_list);
SELECT @email_list;

至于結(jié)果,咱就不贅述了哈。

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL存儲過程技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》及《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》

希望本文所述對大家MySQL數(shù)據(jù)庫計有所幫助。

您可能感興趣的文章:
  • MySQL 游標的定義與使用方式
  • Mysql 存儲過程中使用游標循環(huán)讀取臨時表
  • mysql聲明游標的方法
  • 詳解Mysql 游標的用法及其作用
  • mysql游標的原理與用法實例分析
  • 帶你徹底搞懂python操作mysql數(shù)據(jù)庫(cursor游標講解)
  • MySQL游標概念與用法詳解
  • mysql的存儲過程、游標 、事務(wù)實例詳解
  • Mysql存儲過程中游標的用法實例
  • Mysql存儲過程循環(huán)內(nèi)嵌套使用游標示例代碼
  • MySQL存儲過程中游標循環(huán)的跳出和繼續(xù)操作示例
  • MySQL 游標的作用與使用相關(guān)

標簽:果洛 黃石 煙臺 河北 赤峰 鞍山 來賓 陽江

巨人網(wǎng)絡(luò)通訊聲明:本文標題《mysql存儲過程之游標(DECLARE)原理與用法詳解》,本文關(guān)鍵詞  mysql,存儲,過程,之,游標,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《mysql存儲過程之游標(DECLARE)原理與用法詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于mysql存儲過程之游標(DECLARE)原理與用法詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 666精品国产精品亚洲| yy漫画在线| 毛毛片毛片性色VA久久久| 亚洲美女自拍偷拍| 少妇被c??黄?在线网站| 爽灬爽灬爽灬爽灬A片| 麻豆精产国品一二三产品区别黑人 | 国外一级毛片| yy6080级理论高清免费观看| 日日碰日日摸日日澡视频播放| 萬邦德制藥集團公司简介| chottie.com极品美女| 痒爽好舒服快点再深点| 贱奴校花挨脔日常h惩罚| 骚h| 中文人妻一区二区三区在线播 | 美国人人与禽交zozo| 落花限制分级luohua100| 国产日产久久高清欧美一区Ww| A??W看???????二次元| 女学生喷浆???动漫男| 梧桐匣子乱yin游乐园| 女被?c??黄扒衣服好爽| 少妇把腿扒开让我爽爽视频| 六月婷婷在线观看| 亲嘴扒胸摸屁股免费视频日本网站| 在教室被学长cao到爽| 全部韩国古装三级在线播放| 69福利视频| 美女身体秘?奶头让男子捏| 《性/生活》无删减| 潘春春三级未删减版| 爱情岛网站| 尻逼的视频| 摸胸摸下面视频| 公交车强摁做开腿呻吟| 密桃app| 欧洲亚美老男人啪啪| 欧美?无码黑人3p视频| 免费无码成人AV在线播| 小草视频网站|