亚洲精品中文免费|亚洲日韩中文字幕制服|久久精品亚洲免费|一本之道久久免费

      
      

            <dl id="hur0q"><div id="hur0q"></div></dl>

                MYSQL存儲過程即常用邏輯知識點總結(jié)

                Mysql存儲過程

                1.創(chuàng)建存儲過程語法(格式)

                DELIMITER $CREATE PROCEDURE 存儲過程名A(IN 傳入參數(shù)名a INT,IN 傳入?yún)?shù)名b VARCHAR(20),OUT 返回參數(shù)名c INT)BEGIN  內(nèi)容……….END $

                解析:

                • IN 代表傳入的參數(shù),定義傳入?yún)?shù)名,并且后面跟上傳入?yún)?shù)類型(INT,VARCHAR,DOUBLE,……..)
                • OUT 代表存儲過程執(zhí)行完返回的數(shù)據(jù),定義參數(shù)名,并且后面跟上參數(shù)類型(INT,VARCHAR,DOUBLE,……..)
                • INOUT 代表既可以傳入也可以返回 ,定義參數(shù)名,并且后面跟上參數(shù)類型(INT,VARCHAR,DOUBLE,……..)

                2.存儲過程內(nèi)具體語法與邏輯

                A.定義變量語法:

                DECLARE 變量名a 參數(shù)類型(INT,VARCHAR(20),BOOLEAN,……..) [DEFAULT NULL];

                注:可以在參數(shù)類型后面加 DEFAULT NULL; 來設(shè)置初始值。

                B.變量賦值

                方式1(直接對變量進(jìn)行賦值):

                SET 定義的變量a = NEW();

                方式2(sql查詢的結(jié)果直接賦值給變量):

                SELECT `student`.age INTO 定義的變量a FROM `student` WHERE………..

                方式3(sql查詢的結(jié)果直接賦值給多個變量):

                SELECT `student`.name AS 定義的變量a,`student`.age AS 定義的變量b INTO 定義的變量a,定義的變量b FROM `student` ……………

                c.邏輯判斷:

                #IF判斷:    IF 條件語句(3>5) THEN  條件為TRUE時執(zhí)行………;   END IF;  #IF ELSE判斷:   IF 條件(a>0) THEN    條件為(a>0)時執(zhí)行……..;    ELSE IF 條件(a<0) THEN    條件為(a<0)時執(zhí)行…….;    ELSE         其它執(zhí)行…….;  END IF;

                D.游標(biāo),(LOOP)循環(huán):

                #例.單游標(biāo)循環(huán):create procedure my_procedure() — 創(chuàng)建存儲過程begin — 開始存儲過程declare my_id varchar(32); — 自定義變量1declare my_name varchar(50); — 自定義變量2DECLARE done INT DEFAULT FALSE; — 自定義控制游標(biāo)循環(huán)變量,默認(rèn)falseDECLARE cur CURSOR FOR ( SELECT id, name FROM t_people );– 定義游標(biāo)并輸入結(jié)果集DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; — 綁定控制變量到游標(biāo),游標(biāo)循環(huán)結(jié)束自動轉(zhuǎn)trueOPEN cur; — 打開游標(biāo) posLoop: LOOP — 開始循環(huán)體,myLoop為自定義循環(huán)名,結(jié)束循環(huán)時用到 FETCH cur into my_id, my_name;– 將游標(biāo)當(dāng)前讀取行的數(shù)據(jù)順序賦予自定義變量12    IF done THEN – – 判斷是否繼續(xù)循環(huán)      LEAVE posLoop; — 結(jié)束循環(huán)    END IF; — 自己要做的事情,在 sql 中直接使用自定義變量即可 UPDATE t_user SET c_name = my_name WHERE id = my_id and rtrim(ltrim(c_name)) = ”; — 左右去空格 COMMIT; — 提交事務(wù) END LOOP posLoop; — 結(jié)束自定義循環(huán)體 CLOSE cur; — 關(guān)閉游標(biāo)END; — 結(jié)束存儲過程#例.多游標(biāo)循環(huán):create procedure my_procedure() — 創(chuàng)建存儲過程begin — 開始存儲過程declare my_id varchar(32); — 自定義變量1declare my_name varchar(50); — 自定義變量2DECLARE done INT DEFAULT FALSE; — 自定義控制游標(biāo)循環(huán)變量,默認(rèn)falseDECLARE cur_1 CURSOR FOR ( SELECT id, name FROM t_people ); — 定義游標(biāo)并輸入結(jié)果集DECLARE cur_2 CURSOR FOR ( SELECT id_2,name_2 FROM t_people_2); –定義游標(biāo)并輸入結(jié)果集DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; — 綁定控制變量到游標(biāo),游標(biāo)循環(huán)結(jié)束自動轉(zhuǎn)trueOPEN cur_1; — 打開游標(biāo) posLoop: LOOP — 開始循環(huán)體,myLoop為自定義循環(huán)名,結(jié)束循環(huán)時用到 FETCH cur_1 into my_id, my_name; — 將游標(biāo)當(dāng)前讀取行的數(shù)據(jù)順序賦予自定義變量12    IF done THEN — 判斷是否繼續(xù)循環(huán)      LEAVE posLoop; — 結(jié)束循環(huán)    END IF; — 自己要做的事情,在 sql 中直接使用自定義變量即可 UPDATE ……….;  –自己要做的具體操作 END LOOP posLoop; — 結(jié)束自定義循環(huán)體 CLOSE cur_1; — 關(guān)閉游標(biāo)  SET done = FALSE;  – 因為當(dāng)?shù)谝粋€游標(biāo)遍歷完后其值被handler設(shè)置為TRUE了,如果不用set把它設(shè)置為 FALSE ,那么第二個游標(biāo)就不會遍歷了。(最好是在每個打開游標(biāo)的操作前都用該語句,以確保游標(biāo)能真正遍歷)OPEN cur_2; — 打開游標(biāo) posLoop_2: LOOP — 開始循環(huán)體,myLoop為自定義循環(huán)名,結(jié)束循環(huán)時用到 FETCH cur_2 into my_id, my_name; — 將游標(biāo)當(dāng)前讀取行的數(shù)據(jù)順序賦予自定義變量12    IF done THEN — 判斷是否繼續(xù)循環(huán)      LEAVE posLoop_2; — 結(jié)束循環(huán)    END IF; — 自己要做的事情,在 sql 中直接使用自定義變量即可 INSERT ……….;   –自己要做的具體操作 END LOOP posLoop_2; — 結(jié)束自定義循環(huán)體 CLOSE cur_2; — 關(guān)閉游標(biāo)END; — 結(jié)束存儲過程

                3.存儲過程的調(diào)用

                #調(diào)用沒有返回值的存儲過程CALL 存儲過程名(參數(shù)…..);#調(diào)用有返回值的存儲過程(獲得返回值)CALL 存儲過程名(@aaa);SELECT @aaa;

                4.刪除存儲過程

                DROP PROCEDURE 存儲過程名;

                5.注意事項

                存儲過程中的分號(;)很重要,盡量不要省略。

                鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
                用戶投稿
                上一篇 2022年6月18日 15:09
                下一篇 2022年6月18日 15:10

                相關(guān)推薦

                • 存儲過程語法(sql server存儲過程語法)

                  今天小編給各位分享存儲過程語法的知識,其中也會對sql server存儲過程語法進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧! oracle存儲過程基本語法…

                  2022年11月26日
                • 2022世界杯比賽什么時候結(jié)束總共幾天(2022世界杯比賽對陣圖)

                  2022年卡塔爾世界杯吸引無數(shù)用戶關(guān)注,大家每天也都第一時間觀看世界杯的比賽情況。那么,2022世界杯比賽什么時候結(jié)束?本屆世界杯比賽總共幾天時間呢?很多網(wǎng)友對于2022年世界杯時…

                  2022年11月25日
                • 客服的崗位職責(zé)怎么寫(客服工作內(nèi)容及職責(zé))

                  各位小伙伴們大家周一好,又到了每周一給大家分享干貨內(nèi)容的時候啦~ 本期來跟大家分享一下客服工作管理流程以及客服崗位里面的每項職能崗位的核心細(xì)則,也是干貨滿滿推薦收藏~ 一.補償流程…

                  2022年11月25日
                • 銳龍97900x參數(shù)規(guī)格跑分評測 銳龍97900x屬于什么檔次

                  銳龍9 7900X是銳龍7000系列處理器中性能頂尖的型號之一,它采用了這一代標(biāo)配的zen4架構(gòu)和5nm制程工藝,那么它具體的參數(shù)跑分如何,在電腦上世紀(jì)發(fā)揮怎么樣呢,下面就來看看銳…

                  2022年11月24日
                • 1千克等于多少磅

                  克,此定義在1958年被美國以及其他英聯(lián)邦會員國承認(rèn)換算回來,一千克等于262磅,一磅等于037千克英國在1963年開始,依據(jù)度量衡法案的規(guī);1 磅=16 盎司=04536 千克 …

                  2022年11月24日
                • vivox90pro配置參數(shù)跑分詳情 vivox90pro是什么屏幕

                  vivox90pro參數(shù)配置詳情怎么樣?vivo手機(jī)在昨晚舉行了X90系列發(fā)布會,有普通款、pro款以及pro+款三個版本,那么vivox90pro具體配置怎么樣呢?下面就讓小編為…

                  2022年11月23日
                • vivox90參數(shù)配置詳情 vivox90處理器功耗跑分介紹

                  vivox90參數(shù)配置詳情怎么樣?vivo手機(jī)在昨晚舉行了X90系列發(fā)布會,有普通款、pro款以及pro+款三個版本,那么vivox90具體配置怎么樣呢?下面就讓小編為大家介紹一下…

                  2022年11月23日
                • 小紅書入駐條件及費用(小紅書開店)

                  小紅書喊你回家開店! 有不少用戶都發(fā)現(xiàn),最近在逛小紅書的時候,筆記上面多出了一個圖片標(biāo)簽,點進(jìn)入之后便可進(jìn)入下單頁面,還可以通過商品頁面找到相關(guān)店鋪,大大縮短了交易路徑。 “很方便…

                  2022年11月23日
                • 重慶疫情什么時候結(jié)束恢復(fù)正常出行(重慶疫情什么時候結(jié)束)

                  近期重慶的疫情新增情況也是十分嚴(yán)峻的,目前重慶已經(jīng)劃分了多個疫情高風(fēng)險地區(qū),當(dāng)?shù)氐拿癖娨惨驗楸据喴咔樯钍艿綐O大的影響。那么,重慶疫情什么時候結(jié)束恢復(fù)正常出行?網(wǎng)上關(guān)于重慶疫情預(yù)計…

                  2022年11月22日
                • 預(yù)估北京疫情結(jié)束時間是什么時候(北京疫情預(yù)估什么時候能結(jié)束)

                  有關(guān)注疫情的小伙伴會看到北京這幾天疫情也是非常嚴(yán)峻,每天新增上千,甚至有死亡病例,引起大家的關(guān)注,那么2022年預(yù)估北京疫情結(jié)束時間是什么時候?下面小編為大家?guī)?022預(yù)估北京疫…

                  2022年11月22日

                聯(lián)系我們

                聯(lián)系郵箱:admin#wlmqw.com
                工作時間:周一至周五,10:30-18:30,節(jié)假日休息