免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

      MYSQL存儲(chǔ)過(guò)程即常用邏輯知識(shí)點(diǎn)總結(jié)

      Mysql存儲(chǔ)過(guò)程

      1.創(chuàng)建存儲(chǔ)過(guò)程語(yǔ)法(格式)

      DELIMITER $CREATE PROCEDURE 存儲(chǔ)過(guò)程名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 代表存儲(chǔ)過(guò)程執(zhí)行完返回的數(shù)據(jù),定義參數(shù)名,并且后面跟上參數(shù)類型(INT,VARCHAR,DOUBLE,……..)
      • INOUT 代表既可以傳入也可以返回 ,定義參數(shù)名,并且后面跟上參數(shù)類型(INT,VARCHAR,DOUBLE,……..)

      2.存儲(chǔ)過(guò)程內(nèi)具體語(yǔ)法與邏輯

      A.定義變量語(yǔ)法:

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

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

      B.變量賦值

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

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

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

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

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

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

      c.邏輯判斷:

      #IF判斷:    IF 條件語(yǔ)句(3>5) THEN  條件為T(mén)RUE時(shí)執(zhí)行………;   END IF;  #IF ELSE判斷:   IF 條件(a>0) THEN    條件為(a>0)時(shí)執(zhí)行……..;    ELSE IF 條件(a<0) THEN    條件為(a<0)時(shí)執(zhí)行…….;    ELSE         其它執(zhí)行…….;  END IF;

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

      #例.單游標(biāo)循環(huán):create procedure my_procedure() — 創(chuàng)建存儲(chǔ)過(guò)程begin — 開(kāi)始存儲(chǔ)過(guò)程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é)束自動(dòng)轉(zhuǎn)trueOPEN cur; — 打開(kāi)游標(biāo) posLoop: LOOP — 開(kāi)始循環(huán)體,myLoop為自定義循環(huán)名,結(jié)束循環(huán)時(shí)用到 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é)束存儲(chǔ)過(guò)程#例.多游標(biāo)循環(huán):create procedure my_procedure() — 創(chuàng)建存儲(chǔ)過(guò)程begin — 開(kāi)始存儲(chǔ)過(guò)程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é)束自動(dòng)轉(zhuǎn)trueOPEN cur_1; — 打開(kāi)游標(biāo) posLoop: LOOP — 開(kāi)始循環(huán)體,myLoop為自定義循環(huán)名,結(jié)束循環(huán)時(shí)用到 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;  – 因?yàn)楫?dāng)?shù)谝粋€(gè)游標(biāo)遍歷完后其值被handler設(shè)置為T(mén)RUE了,如果不用set把它設(shè)置為 FALSE ,那么第二個(gè)游標(biāo)就不會(huì)遍歷了。(最好是在每個(gè)打開(kāi)游標(biāo)的操作前都用該語(yǔ)句,以確保游標(biāo)能真正遍歷)OPEN cur_2; — 打開(kāi)游標(biāo) posLoop_2: LOOP — 開(kāi)始循環(huán)體,myLoop為自定義循環(huán)名,結(jié)束循環(huán)時(shí)用到 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é)束存儲(chǔ)過(guò)程

      3.存儲(chǔ)過(guò)程的調(diào)用

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

      4.刪除存儲(chǔ)過(guò)程

      DROP PROCEDURE 存儲(chǔ)過(guò)程名;

      5.注意事項(xiàng)

      存儲(chǔ)過(guò)程中的分號(hào)(;)很重要,盡量不要省略。

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

      相關(guān)推薦

      聯(lián)系我們

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