日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
我們一起聊聊MySQL中的游標(biāo),你學(xué)會(huì)了嗎?

?什么是游標(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ù)。

創(chuàng)新互聯(lián)建站是少有的成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、營銷型企業(yè)網(wǎng)站、小程序制作、手機(jī)APP,開發(fā)、制作、設(shè)計(jì)、買友情鏈接、推廣優(yōu)化一站式服務(wù)網(wǎng)絡(luò)公司,2013年開創(chuàng)至今,堅(jiān)持透明化,價(jià)格低,無套路經(jīng)營理念。讓網(wǎng)頁驚喜每一位訪客多年來深受用戶好評(píng)

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

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

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

1、定義游標(biāo)

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

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é)束。?


新聞名稱:我們一起聊聊MySQL中的游標(biāo),你學(xué)會(huì)了嗎?
地址分享:http://www.dlmjj.cn/article/cdgeohc.html