亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        MySQL數(shù)據(jù)庫(kù)下游標(biāo)的設(shè)計(jì)與應(yīng)用

        2021-10-30 06:47:32李艷杰
        黑龍江科學(xué) 2021年20期
        關(guān)鍵詞:游標(biāo)關(guān)鍵字指針

        李艷杰

        (山東華宇工學(xué)院,山東 德州 253034)

        數(shù)據(jù)庫(kù)中會(huì)經(jīng)常用到查詢(xún),查詢(xún)的結(jié)果是符合條件的多條記錄的集合。但有時(shí)在查詢(xún)時(shí)并不需要把所有符合條件的記錄全部取出,或是需要逐條獲取記錄的值,此時(shí)普通查詢(xún)實(shí)現(xiàn)不了,需要用到游標(biāo)來(lái)逐條讀取記錄值,并對(duì)逐條記錄進(jìn)行使用。在數(shù)據(jù)庫(kù)中,游標(biāo)是系統(tǒng)為用戶(hù)開(kāi)設(shè)的緩沖區(qū)域,存放SQL 語(yǔ)句的執(zhí)行結(jié)果,實(shí)際上,游標(biāo)是一種能從包括多條數(shù)據(jù)記錄結(jié)果集中每次提取一條記錄的機(jī)制,游標(biāo)允許應(yīng)用程序?qū)Σ樵?xún)語(yǔ)句select 返回的行結(jié)果集中每一條記錄進(jìn)行相同或不同的操作,而不是一次對(duì)整個(gè)結(jié)果集進(jìn)行同一種操作,從而可以發(fā)揮每一條記錄的作用。游標(biāo)通常體現(xiàn)在存儲(chǔ)過(guò)程中。

        1 游標(biāo)的使用步驟

        1.1 聲明游標(biāo)

        MySQL中使用declare 關(guān)鍵字來(lái)聲明游標(biāo),其語(yǔ)法結(jié)構(gòu)及解釋如下所示:

        Declare 游標(biāo)名稱(chēng) cursor for select語(yǔ)句。

        注意:關(guān)鍵字是不能少的,游標(biāo)名稱(chēng)符合標(biāo)識(shí)符的定義即可。select語(yǔ)句根據(jù)需求不同,此時(shí)內(nèi)存便分配一塊空間來(lái)存儲(chǔ)返回的結(jié)果集。這塊空間也可以認(rèn)為是一個(gè)虛表,這個(gè)虛表便是游標(biāo)。

        1.2 打開(kāi)游標(biāo)

        打開(kāi)游標(biāo)的關(guān)鍵字為open,其語(yǔ)法結(jié)構(gòu)及解釋如下所示:

        Open 游標(biāo)名稱(chēng)。

        打開(kāi)游標(biāo)即激活查詢(xún)并識(shí)別游標(biāo),此時(shí)游標(biāo)中的指針指向查詢(xún)出的結(jié)果集中第一行記錄的前面。

        1.3 使用游標(biāo)

        使用游標(biāo)的關(guān)鍵字為fetch和into,其語(yǔ)法結(jié)構(gòu)及解釋如下所示:

        Fetch 游標(biāo)名稱(chēng) into 變量。

        注意:第一次使用時(shí),指針指向結(jié)果集中第一條記錄并提取里面的值,每調(diào)用一次,指針會(huì)下移一條記錄,此時(shí)的變量個(gè)數(shù)與select語(yǔ)句后面的字段個(gè)數(shù)一致。

        1.4 關(guān)閉游標(biāo)

        關(guān)閉游標(biāo)的關(guān)鍵字為close,其語(yǔ)法結(jié)構(gòu)及解釋如下所示:

        Close 游標(biāo)名稱(chēng)。

        當(dāng)游標(biāo)指針指向最后一條記錄之后,即不能提取數(shù)據(jù)時(shí),此時(shí)需要關(guān)閉游標(biāo),釋放資源,不能再用fetch來(lái)提取數(shù)據(jù)了。

        2 定義處理程序

        游標(biāo)是寫(xiě)在存儲(chǔ)過(guò)程中的,有時(shí)數(shù)據(jù)量大,不清楚記錄的行數(shù),此時(shí)需要定義處理程序。定義處理程序說(shuō)明如下:

        declare 參數(shù)1 handler for 參數(shù)2 SQL語(yǔ)句。

        參數(shù)1:exit退出當(dāng)前程序,continue 繼續(xù)執(zhí)行程序。

        參數(shù)2:not found 代表當(dāng)fetch抓取不到數(shù)據(jù)時(shí),即游標(biāo)指針走到最后一條記錄的后面,沒(méi)有記錄可以提取了。

        SQL語(yǔ)句:set temp=1,注意temp是變量,必須提前聲明,其值只能是0(false)或1(true)。

        3 游標(biāo)的應(yīng)用

        3.1 建立數(shù)據(jù)庫(kù)和表

        在ceshi1數(shù)據(jù)庫(kù)下,建表。在create table book1(bid int,shl int,jg float),輸入3條記錄,代碼如下:

        Insert into book1 values(102,1,15),(103,3,5) ,(101,2,10);

        3.2 游標(biāo)應(yīng)用

        3.2.1 建立案例anli7

        建立存儲(chǔ)過(guò)程anli7,獲取book1表中的所有記錄,并逐行獲取進(jìn)行顯示。代碼和解釋如下:

        create procedure anli7() -建立存儲(chǔ)過(guò)程;

        begin -把語(yǔ)句放到一個(gè)begin塊內(nèi);

        declare a,b int; -聲明變量存放圖書(shū)編號(hào)和數(shù)量;

        declare c float; -聲明變量存放圖書(shū)價(jià)格;

        declare c1 cursor for select * from book1; -聲明游標(biāo);

        open c1; -打開(kāi)游標(biāo);

        fetch c1 into a,b,c; -使用游標(biāo)提取第一條記錄;

        select a,b,c; -顯示a,b,c的值;

        fetch c1 into a,b,c; -使用游標(biāo)提取第二條記錄;

        select a,b,c; -顯示a,b,c的值;

        fetch c1 into a,b,c; -使用游標(biāo)提取第三條記錄;

        select a,b,c; -顯示a,b,c的值;

        close c1; -關(guān)閉游標(biāo);

        end // -此語(yǔ)句塊結(jié)束。

        完成之后,利用語(yǔ)句mysql> call anli7()//,執(zhí)行存儲(chǔ)過(guò)程,顯示第一條記錄的結(jié)果如圖1所示:

        圖1 執(zhí)行結(jié)果Fig.1 Execution results

        此案例中,已經(jīng)知道了此表中有3條記錄,可以提取3次,假設(shè)不知道有幾條記錄,此時(shí)的解決辦法是使用循環(huán)。由于用到循環(huán),必須考慮循環(huán)退出條件,由于無(wú)法確定記錄條數(shù),所以退出條件無(wú)法寫(xiě),需要定義處理程序,即當(dāng)程序本身發(fā)現(xiàn)問(wèn)題時(shí),會(huì)自動(dòng)去處理。以下用循環(huán)實(shí)現(xiàn)。

        3.2.2 建立案例anli8

        用循環(huán)獲取book1表中的所有記錄,并逐行獲取進(jìn)行顯示。

        create procedure anli8() -建立存儲(chǔ)過(guò)程;

        begin -把語(yǔ)句放到一個(gè)begin塊內(nèi);

        declare a,b int; -聲明變量存放圖書(shū)編號(hào)和數(shù)量;

        declare c float; -聲明變量存放圖書(shū)價(jià)格;

        declare temp int default 0; -聲明一個(gè)變量,默認(rèn)值為0;

        declare c1 cursor for select * from book1; -聲明游標(biāo);

        declare exit handler for not found set temp=1; -not found代表拿不到數(shù)據(jù)。即select語(yǔ)句返回值為空。執(zhí)行set語(yǔ)句,把原來(lái)的默認(rèn)值0改為1,同時(shí)退出整個(gè)程序。即當(dāng)游標(biāo)通過(guò)循環(huán)取完記錄,最終取不到記錄時(shí),退出循環(huán)。

        open c1; -打開(kāi)游標(biāo);

        repeat -循環(huán)語(yǔ)句開(kāi)始;

        fetch c1 into a,b,c; -通過(guò)循環(huán)使用游標(biāo)提取每一條記錄;

        select a,b,c; -顯示a,b,c的值;

        until temp=1 -循環(huán)結(jié)束條件;

        end repeat; -退出循環(huán);

        close c1; -關(guān)閉游標(biāo);

        end // --此語(yǔ)句塊結(jié)束。

        由此可見(jiàn),通過(guò)循環(huán)獲取每一條語(yǔ)句程序更簡(jiǎn)潔合理,因此在存儲(chǔ)過(guò)程中絕大部分的游標(biāo)是和循環(huán)結(jié)合使用的。

        4 總結(jié)

        重點(diǎn)介紹了MySQL數(shù)據(jù)庫(kù)中游標(biāo)含義和使用游標(biāo)的步驟及如何高效使用游標(biāo),并舉例說(shuō)明游標(biāo)的具體使用,以便更方便地使用游標(biāo)解決現(xiàn)實(shí)生活中的問(wèn)題。

        猜你喜歡
        游標(biāo)關(guān)鍵字指針
        開(kāi)繞組直線(xiàn)游標(biāo)永磁電機(jī)的矢量控制研究
        履職盡責(zé)求實(shí)效 真抓實(shí)干勇作為——十個(gè)關(guān)鍵字,盤(pán)點(diǎn)江蘇統(tǒng)戰(zhàn)的2021
        測(cè)量不確定度在游標(biāo)式輪對(duì)內(nèi)距尺檢定裝置中的應(yīng)用
        成功避開(kāi)“關(guān)鍵字”
        偷指針的人
        為什么表的指針都按照順時(shí)針?lè)较蜣D(zhuǎn)動(dòng)
        SQL數(shù)據(jù)庫(kù)中基于游標(biāo)的數(shù)據(jù)更新
        電腦與電信(2015年9期)2015-04-16 01:30:10
        基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
        ARM Cortex—MO/MO+單片機(jī)的指針變量替換方法
        基于用戶(hù)反饋的關(guān)系數(shù)據(jù)庫(kù)關(guān)鍵字查詢(xún)系統(tǒng)
        国产精品久久久久久久久绿色| 91极品尤物国产在线播放| 久久久久久国产精品mv| 亚洲中文字幕无码专区| 久久一日本道色综合久久大香| 日本红怡院东京热加勒比| 日本久久一级二级三级| 日本va中文字幕亚洲久伊人| 久久综合伊人77777麻豆| 久久久久久亚洲av无码蜜芽| 破了亲妺妺的处免费视频国产| 国产女人体一区二区三区| 国产女主播大秀在线观看| 熟女中文字幕一区二区三区| 亚洲中文字幕无码av| 末发育娇小性色xxxx| 日本五月天婷久久网站| 国产一区二区三区观看视频| 日韩精品国产精品亚洲毛片| 久久久国产精品| 国产av丝袜旗袍无码网站| 91精品啪在线观看国产18| 国内精品久久久久久久久蜜桃| 综合图区亚洲另类偷窥| 国产日本精品一区二区免费| 亚洲乱码一区二区三区在线观看 | 四虎国产精品永久在线| 国产亚洲情侣一区二区无| 国内精品人妻无码久久久影院| 国产精品天干天干| 久久久噜噜噜www成人网| 真实夫妻露脸自拍视频在线播放| 中文字幕av一区二区三区人妻少妇| 日本一区午夜艳熟免费| 欧美成人网视频| 日本视频在线播放一区二区| 在线观看国产成人自拍视频| 国产免费爽爽视频在线观看 | 精产国品一二三产品蜜桃| 国产在线不卡免费播放| 产精品无码久久_亚洲国产精|