自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

數(shù)據(jù)庫(kù) MySQL
游標(biāo)(cursor)是一個(gè)存儲(chǔ)在MySQL服務(wù)器上的數(shù)據(jù)庫(kù)查詢, 它不是一條SELECT語(yǔ)句,而是被該語(yǔ)句檢索出來的結(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ǔ)句檢索出來的結(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)的語(yǔ)法。

1.定義游標(biāo)

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

2.打開游標(biāo)

OPEN 游標(biāo)名稱;

3.獲取結(jié)果

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

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

CLOSE 游標(biāo)名稱;

我們以Customers表來作為示例:

圖片

示例一 :

定義一個(gè)存儲(chǔ)過程,調(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;
-- 打開游標(biāo)
OPEN MY;
-- 獲取結(jié)果
FETCH MY INTO NAME,ADDR;
-- 這里是為了顯示獲取結(jié)果
SELECT NAME,ADDR;
-- 關(guān)閉游標(biāo)
CLOSE MY;
END;

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

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)寫入新的表里面。

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;
-- 打開游標(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ǔ)過程,并查詢cus表里的數(shù)據(jù)

CALL PROC2();
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ù)庫(kù)開發(fā)
相關(guān)推薦

2022-09-22 14:55:31

前端JavaScripthis

2022-09-26 13:10:17

JavaScriptthis

2021-11-17 08:11:35

MySQL

2020-04-14 16:26:22

MySQL線程同步

2019-01-07 13:01:08

Linux驚嘆用法命令

2023-01-31 09:02:24

JSVMVR

2022-06-01 07:10:43

遞歸字典極限

2024-06-03 14:27:08

ThisAPIThat

2023-11-26 18:35:25

Python編程語(yǔ)言

2022-04-26 09:01:45

運(yùn)算符TypeScript代碼

2024-01-18 08:38:34

.NET數(shù)組內(nèi)存管理

2024-03-08 13:33:08

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

2018-01-10 08:27:00

2024-01-08 08:45:07

Spring容器Bean

2022-10-24 09:57:02

runeGo語(yǔ)言

2023-12-12 08:41:01

2023-04-13 08:40:12

MySQL服務(wù)器SELECT

2024-04-09 11:40:58

DartJSWasmGC

2024-09-12 08:20:39

2019-02-12 11:15:15

Spring設(shè)計(jì)模式Java
點(diǎn)贊
收藏

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