婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MYSQL存儲過程即常用邏輯知識點總結

MYSQL存儲過程即常用邏輯知識點總結

熱門標簽:美國反騷擾電話機器人 悟空科技電話機器人 真人語音電話機器人 福建外呼系統定制化 400電話可以免費申請嗎 怎么在地圖標注位置生成圖片 銅陵防封電銷卡 騰訊地圖標注提升 電銷卡外呼系統供應商

Mysql存儲過程

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

DELIMITER $
CREATE PROCEDURE 存儲過程名A(IN 傳入參數名a INT,IN 傳入參數名b VARCHAR(20),OUT 返回參數名c INT)
BEGIN
  內容..........
END $

解析:

  • IN 代表傳入的參數,定義傳入參數名,并且后面跟上傳入參數類型(INT,VARCHAR,DOUBLE,........)
  • OUT 代表存儲過程執行完返回的數據,定義參數名,并且后面跟上參數類型(INT,VARCHAR,DOUBLE,........)
  • INOUT 代表既可以傳入也可以返回 ,定義參數名,并且后面跟上參數類型(INT,VARCHAR,DOUBLE,........)

2.存儲過程內具體語法與邏輯

A.定義變量語法:

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

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

B.變量賦值:

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

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

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

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

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

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

c.邏輯判斷:

#IF判斷:    

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

D.游標,(LOOP)循環:

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

DECLARE cur CURSOR FOR ( SELECT id, name FROM t_people ); -- 定義游標并輸入結果集
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 綁定控制變量到游標,游標循環結束自動轉true
 
OPEN cur; -- 打開游標
 posLoop: LOOP -- 開始循環體,myLoop為自定義循環名,結束循環時用到
  FETCH cur into my_id, my_name; -- 將游標當前讀取行的數據順序賦予自定義變量12
     IF done THEN -- 判斷是否繼續循環
        LEAVE posLoop; -- 結束循環
    END IF;
  -- 自己要做的事情,在 sql 中直接使用自定義變量即可
  UPDATE t_user SET c_name = my_name WHERE id = my_id and rtrim(ltrim(c_name)) = ''; -- 左右去空格
 
  COMMIT; -- 提交事務
 END LOOP posLoop; -- 結束自定義循環體
 CLOSE cur; -- 關閉游標
END; -- 結束存儲過程
#例.多游標循環:create procedure my_procedure() -- 創建存儲過程begin -- 開始存儲過程
declare my_id varchar(32); -- 自定義變量1
declare my_name varchar(50); -- 自定義變量2
DECLARE done INT DEFAULT FALSE; -- 自定義控制游標循環變量,默認false

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

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 綁定控制變量到游標,游標循環結束自動轉true
 
OPEN cur_1; -- 打開游標
 posLoop: LOOP -- 開始循環體,myLoop為自定義循環名,結束循環時用到
  FETCH cur_1 into my_id, my_name; -- 將游標當前讀取行的數據順序賦予自定義變量12
     IF done THEN -- 判斷是否繼續循環
        LEAVE posLoop; -- 結束循環
    END IF;
  -- 自己要做的事情,在 sql 中直接使用自定義變量即可
  UPDATE ..........;  --自己要做的具體操作
 END LOOP posLoop; -- 結束自定義循環體
 CLOSE cur_1; -- 關閉游標

  SET done = FALSE;  -- 因為當第一個游標遍歷完后其值被handler設置為TRUE了,如果不用set把它設置為 FALSE ,那么第二個游標就不會遍歷了。(最好是在每個打開游標的操作前都用該語句,以確保游標能真正遍歷)
  
OPEN cur_2; -- 打開游標
 posLoop_2: LOOP -- 開始循環體,myLoop為自定義循環名,結束循環時用到
  FETCH cur_2 into my_id, my_name; -- 將游標當前讀取行的數據順序賦予自定義變量12
     IF done THEN -- 判斷是否繼續循環
        LEAVE posLoop_2; -- 結束循環
    END IF;
  -- 自己要做的事情,在 sql 中直接使用自定義變量即可
  INSERT ..........;   --自己要做的具體操作
 END LOOP posLoop_2; -- 結束自定義循環體
 CLOSE cur_2; -- 關閉游標


END; -- 結束存儲過程

3.存儲過程的調用

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

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

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

4.刪除存儲過程

DROP PROCEDURE 存儲過程名; 

5.注意事項

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

您可能感興趣的文章:
  • 深入了解Mysql邏輯架構
  • MySQL高級學習筆記(三):Mysql邏輯架構介紹、mysql存儲引擎詳解
  • 詳解MySQL執行原理、邏輯分層、更改數據庫處理引擎
  • Mysql邏輯架構詳解
  • 關于避免MySQL替換邏輯SQL的坑爹操作詳解
  • 利用PHP訪問MySql數據庫的邏輯操作以及增刪改查的實例講解
  • MySql存儲過程之邏輯判斷和條件控制
  • MySQL 利用frm文件和ibd文件恢復表數據
  • MySQL使用binlog日志做數據恢復的實現
  • MySQL 基于時間點的快速恢復方案
  • MySQL5.7 mysqldump備份與恢復的實現
  • MySQL 邏輯備份與恢復測試的相關總結

標簽:湖北 湖南 烏海 云浮 武威 聊城 白銀 臨汾

巨人網絡通訊聲明:本文標題《MYSQL存儲過程即常用邏輯知識點總結》,本文關鍵詞  MYSQL,存儲,過程,即,常用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MYSQL存儲過程即常用邏輯知識點總結》相關的同類信息!
  • 本頁收集關于MYSQL存儲過程即常用邏輯知識點總結的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 玉田县| 柳州市| 托里县| 修文县| 沂南县| 和政县| 芦溪县| 灵山县| 慈利县| 甘孜县| 靖宇县| 方山县| 石嘴山市| 广东省| 兴宁市| 顺平县| 龙胜| 仙游县| 四会市| 稷山县| 忻州市| 横山县| 茂名市| 宁南县| 寿光市| 忻城县| 原阳县| 灵武市| 都匀市| 长葛市| 镶黄旗| 六盘水市| 上栗县| 延长县| 太白县| 关岭| 盐源县| 连江县| 张家界市| 卫辉市| 故城县|