日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

什么是游標(biāo)?

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

 

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

 

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

在創(chuàng)建一個游標(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表來作為示例

圖片

 

示例一 

定義一個存儲過程,調(diào)用的時候執(zhí)行里面的游標(biāo)

CREATE PROCEDURE PROC1()
BEGIN
    -- 定義兩個存放結(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í)行完上面的存儲過程后,就可以調(diào)用該存儲過程了

CALL PROC1();

得到結(jié)果:

 

圖片

 

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

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

 

示例二

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

CREATE PROCEDURE PROC2()
BEGIN
    -- 定義兩個存放結(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í)行這個存儲過程,并查詢cus表里的數(shù)據(jù)

CALL PROC2();
SELECT * FROM cus;

結(jié)果:

 

圖片

 

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

 

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

分享到:
標(biāo)簽:MySQL
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定