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

聊聊 MySQL 中的游標

數據庫 MySQL 服務器
游標(cursor)是一個存儲在MySQL服務器上的數據庫查詢, 它不是一條SELECT語句,而是被該語句檢索出來的結果集。在存儲了游 標之后,應用程序可以根據需要滾動或瀏覽其中的數據。

[[435403]]

什么是游標?

游標(cursor)是一個存儲在MySQL服務器上的數據庫查詢, 它不是一條SELECT語句,而是被該語句檢索出來的結果集。在存儲了游 標之后,應用程序可以根據需要滾動或瀏覽其中的數據。

注意:MySQL游標只能用于 存儲過程(和函數)。

創建游標

在創建一個游標前,我們需要先清除游標的語法

1、定義游標

  1. DECLARE 游標名稱 CURSOR FOR SQL語句; 

2、打開游標

  1. OPEN 游標名稱; 

3、獲取結果

  1. FETCH 游標名稱 INTO 變量名稱[,變量名稱]; 

4、關閉游標

  1. CLOSE 游標名稱; 

我們以Customers表來作為示例

示例一

定義一個存儲過程,調用的時候執行里面的游標

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

我們執行完上面的存儲過程后,就可以調用該存儲過程了

  1. CALL PROC1(); 

得到結果:

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

這是因為游標的變量只保留了customers表中的第一行數據,如果要查看后面的數據,就需要循環往下移動游標,才能繼續查看。

示例二

定義一個存儲過程,調用存儲過程時,將表customers里的數據循環寫入新的表里面。

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

然后我們執行這個存儲過程,并查詢cus表里的數據

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

結果:

結果與customers里的一致,但是這些結果是循環一條一條往下移動的過程中插入的,即這個循環執行了7次。 

以上就是游標的基本操作原理了,此外游標的循環體還有WHILE,REPEAT等操作方式,他們的操作方式與LOOP類似,都是用來循環執行循環體里面的內容,直到循環結束。

 

責任編輯:武曉燕 來源: SQL數據庫開發
相關推薦

2023-04-13 08:40:12

MySQL服務器SELECT

2023-11-09 11:56:28

MySQL死鎖

2022-06-29 08:32:04

游標MySQL服務器

2021-06-03 19:13:06

MySQLJson數據

2023-06-12 09:09:19

MySQLDDLNSTANT

2021-08-31 07:54:24

SQLDblink查詢

2024-04-26 00:00:00

Rust檢查器代碼

2021-10-30 19:56:10

Flutter按鈕 Buttons

2022-05-11 09:01:54

Swift類型系統幻象類型

2023-07-28 09:54:14

SQL數據Excel

2021-03-08 00:11:02

Spring注解開發

2022-07-04 08:54:39

Swift處理器項目

2022-08-03 08:11:58

數據測試同類型

2021-09-03 06:46:34

SQL分組集功能

2024-04-15 00:00:00

RabbitMQ死信隊列消息

2021-08-16 08:12:04

SQLMerge用法

2022-11-26 08:16:26

2022-04-02 10:23:12

MySQL數據庫

2021-08-16 06:56:21

Slice數組類型內存

2022-04-02 08:14:02

JavaThreadLoca數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品一区一区 | 亚洲一区在线播放 | 日韩在线视频一区 | 久久人人爽人人爽人人片av免费 | 一区二区三区国产好 | 色综合中文 | 91黄色片免费看 | 91精品久久久久久久久99蜜臂 | 久久夜色精品国产 | 一级做a爰片性色毛片视频停止 | 国产日韩欧美精品 | 国产精品久久久久久久久久尿 | 97国产成人| 91精品久久久久久综合五月天 | xxx.在线观看 | 91精品久久久久 | 亚洲国产一区二区三区 | 中文字幕精品一区二区三区精品 | 午夜视频免费在线观看 | 男人的天堂在线视频 | 久久久久网站 | 久久久精品一区 | 99视频在线播放 | 日韩欧美成人精品 | 久久久www成人免费精品 | 日本不卡一区二区 | 国产成人亚洲精品自产在线 | 日韩一区二区在线视频 | 国产亚洲成av人片在线观看桃 | 国产精品久久久久久婷婷天堂 | 中文字幕欧美日韩 | 成人在线观看中文字幕 | 青青久草| 欧美综合一区二区 | 亚洲精品久久久蜜桃网站 | 91精品久久久久久久久久 | 久久久精品天堂 | 成人在线中文 | 国产一区二区三区在线看 | 中文字幕一区二区三区精彩视频 | 九九热精品在线 |