激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫(kù)技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫(kù) - Mysql - 聊聊 MySQL 中的游標(biāo)

聊聊 MySQL 中的游標(biāo)

2021-11-17 22:08SQL數(shù)據(jù)庫(kù)開(kāi)發(fā) 丶平凡世界 Mysql

游標(biāo)(cursor)是一個(gè)存儲(chǔ)在MySQL服務(wù)器上的數(shù)據(jù)庫(kù)查詢(xún), 它不是一條SELECT語(yǔ)句,而是被該語(yǔ)句檢索出來(lái)的結(jié)果集。在存儲(chǔ)了游 標(biāo)之后,應(yīng)用程序可以根據(jù)需要滾動(dòng)或?yàn)g覽其中的數(shù)據(jù)。

聊聊 MySQL 中的游標(biāo)

什么是游標(biāo)?

游標(biāo)(cursor)是一個(gè)存儲(chǔ)在MySQL服務(wù)器上的數(shù)據(jù)庫(kù)查詢(xún), 它不是一條SELECT語(yǔ)句,而是被該語(yǔ)句檢索出來(lái)的結(jié)果集。在存儲(chǔ)了游 標(biāo)之后,應(yīng)用程序可以根據(jù)需要滾動(dòng)或?yàn)g覽其中的數(shù)據(jù)。

注意:MySQL游標(biāo)只能用于 存儲(chǔ)過(guò)程(和函數(shù))。

創(chuàng)建游標(biāo)

在創(chuàng)建一個(gè)游標(biāo)前,我們需要先清除游標(biāo)的語(yǔ)法

1、定義游標(biāo)

  1. DECLARE 游標(biāo)名稱(chēng) CURSOR FOR SQL語(yǔ)句;

2、打開(kāi)游標(biāo)

  1. OPEN 游標(biāo)名稱(chēng);

3、獲取結(jié)果

  1. FETCH 游標(biāo)名稱(chēng) INTO 變量名稱(chēng)[,變量名稱(chēng)];

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

  1. CLOSE 游標(biāo)名稱(chēng);

我們以Customers表來(lái)作為示例

聊聊 MySQL 中的游標(biāo)

示例一

定義一個(gè)存儲(chǔ)過(guò)程,調(diào)用的時(shí)候執(zhí)行里面的游標(biāo)

  1. CREATE PROCEDURE PROC1()
  2. BEGIN
  3. -- 定義兩個(gè)存放結(jié)果的變量
  4. DECLARE NAME VARCHAR(20);
  5. DECLARE ADDR VARCHAR(50);
  6. -- 聲明游標(biāo)
  7. DECLARE MY CURSOR FOR SELECT 姓名,地址 FROM customers;
  8. -- 打開(kāi)游標(biāo)
  9. OPEN MY;
  10. -- 獲取結(jié)果
  11. FETCH MY INTO NAME,ADDR;
  12. -- 這里是為了顯示獲取結(jié)果
  13. SELECT NAME,ADDR;
  14. -- 關(guān)閉游標(biāo)
  15. CLOSE MY;
  16. END;

我們執(zhí)行完上面的存儲(chǔ)過(guò)程后,就可以調(diào)用該存儲(chǔ)過(guò)程了

  1. CALL PROC1();

得到結(jié)果:

聊聊 MySQL 中的游標(biāo)

這里肯定有小伙伴好奇,customers表里明明有7條記錄,為什么只顯示了1條記錄?

這是因?yàn)橛螛?biāo)的變量只保留了customers表中的第一行數(shù)據(jù),如果要查看后面的數(shù)據(jù),就需要循環(huán)往下移動(dòng)游標(biāo),才能繼續(xù)查看。

示例二

定義一個(gè)存儲(chǔ)過(guò)程,調(diào)用存儲(chǔ)過(guò)程時(shí),將表customers里的數(shù)據(jù)循環(huán)寫(xiě)入新的表里面。

  1. CREATE PROCEDURE PROC2()
  2. BEGIN
  3. -- 定義兩個(gè)存放結(jié)果的變量
  4. DECLARE FLAG INT DEFAULT 0;
  5. DECLARE NAME VARCHAR(20);
  6. DECLARE ADDR VARCHAR(50);
  7. -- 聲明游標(biāo)
  8. DECLARE MY CURSOR FOR SELECT 姓名,地址 FROM customers;
  9. DECLARE CONTINUE HANDLER FOR NOT FOUND SET FLAG=1;
  10. -- 打開(kāi)游標(biāo)
  11. OPEN MY;
  12. -- 循環(huán)體部分
  13. L1:LOOP
  14. -- 獲取結(jié)果
  15. FETCH MY INTO NAME,ADDR;
  16. IF FLAG=1 THEN
  17. LEAVE L1;
  18. END IF;
  19. -- 這里是為了顯示獲取結(jié)果
  20. INSERT INTO cus VALUES(NAME,ADDR);
  21. -- 關(guān)閉游標(biāo)
  22. END LOOP; -- 結(jié)束循環(huán)
  23. CLOSE MY;
  24. END;

然后我們執(zhí)行這個(gè)存儲(chǔ)過(guò)程,并查詢(xún)cus表里的數(shù)據(jù)

  1. CALL PROC2();
  2. SELECT * FROM cus;

結(jié)果:

聊聊 MySQL 中的游標(biāo)

結(jié)果與customers里的一致,但是這些結(jié)果是循環(huán)一條一條往下移動(dòng)的過(guò)程中插入的,即這個(gè)循環(huán)執(zhí)行了7次。

以上就是游標(biāo)的基本操作原理了,此外游標(biāo)的循環(huán)體還有WHILE,REPEAT等操作方式,他們的操作方式與LOOP類(lèi)似,都是用來(lái)循環(huán)執(zhí)行循環(huán)體里面的內(nèi)容,直到循環(huán)結(jié)束。

原文鏈接:https://mp.weixin.qq.com/s/ywVDU0G2GCijxeof5FB1JQ

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲网视频 | 亚洲精品自在在线观看 | 麻豆视频国产在线观看 | 鲁丝一区二区二区四区 | 国产老师做www爽爽爽视频 | 日韩黄色免费观看 | 精品少妇v888av | 全黄裸片武则天一级第4季 偿还电影免费看 | 欧美性受xxxx人人本视频 | 国产流白浆高潮在线观看 | 九九热精品视频在线免费观看 | 日朝毛片 | 国产精品亚洲激情 | 国产精品久久久久影院老司 | 欧美日韩精品一区二区三区不卡 | 俄罗斯16一20sex牲色另类 | 福利免费在线 | 欧美日本亚洲视频 | 国产女做a爱免费视频 | 成人免费一区二区三区视频网站 | 成人午夜淫片a | 欧美性生活久久久 | 天天草天天色 | 成人短视频在线播放 | 黄色av网站在线观看 | 韩毛片 | 中文字幕欧美日韩 | 关键词| 成人午夜激情视频 | 成人午夜视频免费 | 毛片免费观看视频 | 精品久久久久久久久中文字幕 | 色综合中文字幕 | 久久精品视频16 | 最新日韩在线观看视频 | 久久精品无码一区二区日韩av | 欧美一级一区二区三区 | avhd101高清在线迷片麻豆 | 91性视频 | 中文字幕一区2区 | 国产精品久久久久久久久久久久久久久久 |