最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年08月29日 15:54:35   作者:MoMing  
在本篇文章里小編給大家整理的是關于MYSQL存儲過程即常用邏輯知識點,有需要的朋友們可以學習下。

Mysql存儲過程

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

DELIMITER $
CREATE PROCEDURE 存儲過程名A(IN 傳入?yún)?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; 來設置初始值。

B.變量賦值:

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

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.游標,(LOOP)循環(huán):

#例.單游標循環(huán):create procedure my_procedure() -- 創(chuàng)建存儲過程
begin -- 開始存儲過程
declare my_id varchar(32); -- 自定義變量1
declare my_name varchar(50); -- 自定義變量2
DECLARE done INT DEFAULT FALSE; -- 自定義控制游標循環(huán)變量,默認false

DECLARE cur CURSOR FOR ( SELECT id, name FROM t_people ); -- 定義游標并輸入結(jié)果集
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 綁定控制變量到游標,游標循環(huán)結(jié)束自動轉(zhuǎn)true
 
OPEN cur; -- 打開游標
 posLoop: LOOP -- 開始循環(huán)體,myLoop為自定義循環(huán)名,結(jié)束循環(huán)時用到
  FETCH cur into my_id, my_name; -- 將游標當前讀取行的數(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; -- 提交事務
 END LOOP posLoop; -- 結(jié)束自定義循環(huán)體
 CLOSE cur; -- 關閉游標
END; -- 結(jié)束存儲過程
#例.多游標循環(huán):create procedure my_procedure() -- 創(chuàng)建存儲過程begin -- 開始存儲過程
declare my_id varchar(32); -- 自定義變量1
declare my_name varchar(50); -- 自定義變量2
DECLARE done INT DEFAULT FALSE; -- 自定義控制游標循環(huán)變量,默認false

DECLARE cur_1 CURSOR FOR ( SELECT id, name FROM t_people ); -- 定義游標并輸入結(jié)果集
DECLARE cur_2 CURSOR FOR ( SELECT id_2,name_2 FROM t_people_2); --定義游標并輸入結(jié)果集

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 綁定控制變量到游標,游標循環(huán)結(jié)束自動轉(zhuǎn)true
 
OPEN cur_1; -- 打開游標
 posLoop: LOOP -- 開始循環(huán)體,myLoop為自定義循環(huán)名,結(jié)束循環(huán)時用到
  FETCH cur_1 into my_id, my_name; -- 將游標當前讀取行的數(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; -- 關閉游標

  SET done = FALSE;  -- 因為當?shù)谝粋€游標遍歷完后其值被handler設置為TRUE了,如果不用set把它設置為 FALSE ,那么第二個游標就不會遍歷了。(最好是在每個打開游標的操作前都用該語句,以確保游標能真正遍歷)
  
OPEN cur_2; -- 打開游標
 posLoop_2: LOOP -- 開始循環(huán)體,myLoop為自定義循環(huán)名,結(jié)束循環(huán)時用到
  FETCH cur_2 into my_id, my_name; -- 將游標當前讀取行的數(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; -- 關閉游標


END; -- 結(jié)束存儲過程

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

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

#調(diào)用有返回值的存儲過程(獲得返回值)

CALL 存儲過程名(@aaa);
SELECT @aaa;

4.刪除存儲過程

DROP PROCEDURE 存儲過程名; 

5.注意事項

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

相關文章

  • MySQL中的CONCAT()函數(shù):輕松拼接字符串的利器

    MySQL中的CONCAT()函數(shù):輕松拼接字符串的利器

    這篇文章主要介紹了MySQL中的CONCAT()函數(shù):輕松拼接字符串的利器,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • SQL函數(shù)實現(xiàn)Group_concat用法

    SQL函數(shù)實現(xiàn)Group_concat用法

    GROUP_CONCAT用于將每個分組內(nèi)的值連接成一個字符串,并通過指定的分隔符進行分隔,本文主要介紹了SQL函數(shù)實現(xiàn)Group_concat用法,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • mysql之group by和having用法詳解

    mysql之group by和having用法詳解

    這篇文章主要介紹了mysql之group by和having用法詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • mysql字符串拼接的4種方式總結(jié)

    mysql字符串拼接的4種方式總結(jié)

    MySQL字符串拼接可以使多個字段的值組成一個集合,不僅可以拼接字符串與字符串、空格、特殊符號甚至可以拼接中文文本,下面這篇文章主要給大家介紹了關于mysql字符串拼接的4種方式,需要的朋友可以參考下
    2023-02-02
  • MySQL提示Truncated incorrect DOUBLE value解決方法

    MySQL提示Truncated incorrect DOUBLE value解決方法

    這篇文章給大家介紹了MySQL提示Truncated incorrect DOUBLE value報錯的四種解決方法,并通過代碼給大家介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2024-02-02
  • MySQL中的悲觀鎖與樂觀鎖

    MySQL中的悲觀鎖與樂觀鎖

    這篇文章主要介紹了MySQL中悲觀鎖與樂觀鎖的相關資料,幫助大家更好的理解和學習MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-09-09
  • Centos6.4編譯安裝mysql 8.0.0 詳細教程

    Centos6.4編譯安裝mysql 8.0.0 詳細教程

    這篇文章主要為大家分享了Centos6.4編譯安裝mysql 8.0.0 詳細教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • MySQL性能監(jiān)控軟件Nagios的安裝及配置教程

    MySQL性能監(jiān)控軟件Nagios的安裝及配置教程

    這篇文章主要介紹了MySQL性能監(jiān)控軟件Nagios的安裝及配置教程,這里以CentOS操作系統(tǒng)為環(huán)境進行演示,需要的朋友可以參考下
    2015-12-12
  • 淺析MySQL索引結(jié)構(gòu)采用B+樹的問題

    淺析MySQL索引結(jié)構(gòu)采用B+樹的問題

    數(shù)據(jù)庫的存儲引擎都是采用B樹或者B+樹來實現(xiàn)索引的存儲,總體來說,我認為技術(shù)方案的選型,更多的要根據(jù)具體的業(yè)務場景來決定,并不一定是說B+樹就是最好的選擇,就像MongoDB里面采用B樹結(jié)構(gòu),本文介紹我對MySQL索引結(jié)構(gòu)采用B+樹的理解
    2022-06-06
  • Mysql 遠程連接配置實現(xiàn)的兩種方法

    Mysql 遠程連接配置實現(xiàn)的兩種方法

    這篇文章主要介紹了Mysql 遠程連接配置實現(xiàn)的兩種方法的相關資料,需要的朋友可以參考下
    2017-07-07

最新評論

久治县| 秦安县| 朔州市| 怀仁县| 枞阳县| 大邑县| 南华县| 香港| 滦南县| 板桥市| 赣榆县| 湖北省| 纳雍县| 罗源县| 家居| 区。| 松原市| 凤山县| 乳源| 宁海县| 山丹县| 北辰区| 应城市| 亚东县| 兴和县| 台前县| 兰坪| 阿勒泰市| 布尔津县| 明水县| 滕州市| 利津县| 庆城县| 盐津县| 周至县| 莒南县| 保康县| 大洼县| 隆德县| 北流市| 广州市|