偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

你知道MySQL中的游標(biāo)嗎?

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

什么是游標(biāo)?

游標(biāo)(cursor)是一個(gè)存儲(chǔ)在MySQL服務(wù)器上的數(shù)據(jù)庫(kù)查詢, 它不是一條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)

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

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

OPEN 游標(biāo)名稱;

3.獲取結(jié)果

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

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

CLOSE 游標(biāo)名稱;

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

圖片

示例一 :

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

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

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

CALL PROC1();

得到結(jié)果:

圖片

這里肯定有小伙伴好奇,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)寫入新的表里面。

CREATE PROCEDURE PROC2()
BEGIN
-- 定義兩個(gè)存放結(jié)果的變量
DECLARE FLAG INT DEFAULT 0;
DECLARE NAME VARCHAR(20);
DECLARE ADDR VARCHAR(50);
-- 聲明游標(biāo)
DECLARE MY CURSOR FOR SELECT 姓名,地址 FROM customers;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET FLAG=1;
-- 打開(kāi)游標(biāo)
OPEN MY;
-- 循環(huán)體部分
L1:LOOP
-- 獲取結(jié)果
FETCH MY INTO NAME,ADDR;
IF FLAG=1 THEN
LEAVE L1;
END IF;
-- 這里是為了顯示獲取結(jié)果
INSERT INTO cus VALUES(NAME,ADDR);
-- 關(guān)閉游標(biāo)
END LOOP; -- 結(jié)束循環(huán)
CLOSE MY;
END;

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

CALL PROC2();
SELECT * FROM cus;

結(jié)果:

圖片

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

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

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

2022-09-22 14:55:31

前端JavaScripthis

2022-09-26 13:10:17

JavaScriptthis

2024-06-03 14:27:08

ThisAPIThat

2020-04-14 16:26:22

MySQL線程同步

2019-01-07 13:01:08

Linux驚嘆用法命令

2021-11-17 08:11:35

MySQL

2023-01-31 09:02:24

JSVMVR

2024-01-08 08:45:07

Spring容器Bean

2022-06-01 07:10:43

遞歸字典極限

2010-11-23 10:21:53

跳槽

2023-11-26 18:35:25

Python編程語(yǔ)言

2022-04-26 09:01:45

運(yùn)算符TypeScript代碼

2021-10-08 21:00:52

數(shù)據(jù)弱引用對(duì)象

2019-06-03 10:14:07

API網(wǎng)關(guān)微服務(wù)

2023-12-08 14:13:00

MemrayPython內(nèi)存

2024-03-08 13:33:08

PG數(shù)據(jù)安全

2020-03-23 08:15:43

JavaScriptError對(duì)象函數(shù)

2022-11-10 09:00:41

2018-08-07 09:29:35

數(shù)據(jù)庫(kù)MySQL優(yōu)化方法

2018-01-10 08:27:00

點(diǎn)贊
收藏

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