成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

[[435403]]

什么是游標(biāo)?

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

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

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

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

1、定義游標(biāo)

  1. DECLARE 游標(biāo)名稱 CURSOR FOR SQL語句; 

2、打開游標(biāo)

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

3、獲取結(jié)果

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

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

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

我們以Customers表來作為示例

示例一

定義一個(gè)存儲(chǔ)過程,調(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.     -- 打開游標(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ǔ)過程后,就可以調(diào)用該存儲(chǔ)過程了

  1. CALL PROC1(); 

得到結(jié)果:

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

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

示例二

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

  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.  
  10.     DECLARE CONTINUE HANDLER FOR NOT FOUND SET FLAG=1; 
  11.     -- 打開游標(biāo) 
  12.     OPEN MY; 
  13.     -- 循環(huán)體部分 
  14.     L1:LOOP 
  15.     -- 獲取結(jié)果 
  16.     FETCH MY INTO NAME,ADDR; 
  17.     IF FLAG=1 THEN 
  18.        LEAVE L1; 
  19.     END IF; 
  20.     -- 這里是為了顯示獲取結(jié)果 
  21.     INSERT INTO cus VALUES(NAME,ADDR); 
  22.     -- 關(guān)閉游標(biāo) 
  23.     END LOOP;  -- 結(jié)束循環(huán) 
  24.     CLOSE MY;     
  25. END

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

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

結(jié)果:

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

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

 

責(zé)任編輯:武曉燕 來源: SQL數(shù)據(jù)庫開發(fā)
相關(guān)推薦

2023-04-13 08:40:12

MySQL服務(wù)器SELECT

2023-11-09 11:56:28

MySQL死鎖

2022-06-29 08:32:04

游標(biāo)MySQL服務(wù)器

2021-06-03 19:13:06

MySQLJson數(shù)據(jù)

2024-04-26 00:00:00

Rust檢查器代碼

2021-08-31 07:54:24

SQLDblink查詢

2023-06-12 09:09:19

MySQLDDLNSTANT

2021-08-16 06:56:21

Slice數(shù)組類型內(nèi)存

2022-04-02 08:14:02

JavaThreadLoca數(shù)據(jù)

2021-11-09 06:55:03

SQLServer排序

2021-12-11 19:00:54

Java中斷機(jī)制

2023-08-29 09:46:12

SQLCTE遞歸

2022-04-02 10:23:12

MySQL數(shù)據(jù)庫

2010-11-16 15:40:21

oracle游標(biāo)

2022-11-26 08:16:26

2021-10-30 19:56:10

Flutter按鈕 Buttons

2022-05-11 09:01:54

Swift類型系統(tǒng)幻象類型

2023-07-28 09:54:14

SQL數(shù)據(jù)Excel

2021-03-08 00:11:02

Spring注解開發(fā)

2024-04-15 00:00:00

RabbitMQ死信隊(duì)列消息
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品一区二区av | 一区二区三区视频在线观看 | 国产欧美久久精品 | 午夜一区二区三区在线观看 | 久久一二区| 国产精品久久久久久久久久免费看 | 亚洲成av人影片在线观看 | 嫩草一区二区三区 | 亚洲精品久 | 日韩一区二区三区在线观看视频 | 国产精品免费观看 | 欧美成人免费在线视频 | 国产精品久久久久久久久久久久久久 | 日韩电影一区 | 亚洲国产精品一区二区久久 | 高清18麻豆| 精品国产欧美一区二区 | 国产免费人成xvideos视频 | 日韩国产三区 | 成人福利在线视频 | 亚洲资源在线 | 精品久久一区 | 日韩成人一区二区 | 农村妇女毛片精品久久久 | 精品久久久久久久久久久久久久久久久 | 天天干狠狠 | 亚洲日本中文 | 成人小视频在线免费观看 | 色视频在线播放 | 日韩精品激情 | 在线观看黄视频 | 中文字幕欧美日韩 | 国产欧美综合在线 | 久久精品国产亚洲 | 影音先锋中文在线 | 午夜免费视频 | 欧美老少妇一级特黄一片 | 日韩成人免费av | 成人精品一区亚洲午夜久久久 | 一级全黄少妇性色生活免费看 | 国产黄色大片 |