最開始寫 mysql 存儲過程的時候 總是由於這種莫名其妙的緣由報錯,百度了說是不太支持,今天再試了一下發現成功了,個人mysql數據的版本是5.7 。如今的一些工具,真的是越作越好啊。努力學習,不能埋沒了他們。mysql
DROP PROCEDURE demoOne; -- 刪除一個存儲過程,沒有存儲過程時會報錯 DELIMITER // -- 將存錯過程當中的分隔符 改爲 // CREATE PROCEDURE demoOne( -- 建立一個存儲過程 IN ywbh VARCHAR(255), -- 一個輸入參數 OUT num INT, -- 一個輸出參數 INOUT beizhu INT -- 一個輸入輸出參數 ) BEGIN DECLARE base int DEFAULT 5; -- 定義了一個變量指定變量的默認值爲 5 DECLARE goIndex int DEFAULT 5; -- 定義可一個變量,變量上方不能有 邏輯塊,會報錯 DECLARE EXIT HANDLER FOR 1064 -- 定義一個異常處理 SELECT * FROM sys_department where BIANMA = ywbh; -- 一個簡單的查詢 SELECT COUNT(BIANMA) INTO num FROM sys_department; -- 用into在查詢中給變量賦值 SELECT COUNT(BZ)*base INTO beizhu FROM sys_department; -- 查詢中給變量賦值 IF num < beizhu THEN -- 條件判斷, case 跟 when 能夠用 SET beizhu = base; ELSEIF num >= beizhu THEN SET beizhu = base+base; -- 用set給運算的變量賦值 END IF; WHILE goIndex > 0 DO -- while循環 SET beizhu = beizhu+ goIndex; set goIndex = goIndex - 1; END WHILE; END // -- 借宿存儲過程 DELIMITER ; -- 將存儲過程當中的分隔符改回 ; -- 注意改變分隔符的目的是爲了,將存儲過程一次性的發送出去,而不是被 ; 分割成了不少段以後一段一段的發送 set @beizhu = 1; -- 定義一個變量 CALL demoOne('8',@num,@beizhu); -- 調用存儲過程 第一個數輸入參數,第二個是輸出參數,第三個是輸入輸出參數 SELECT @num,@beizhu; -- 檢查存儲過程返回的參數的值 SHOW PROCEDURE STATUS where name like 'demo%'; -- 查看存儲過程 SHOW CREATE PROCEDURE demoOne; -- 查看存儲過程的原碼
上面就是我今天所用到的一些存儲過程的一下操做,在調試這個存儲過程的時候最好是吧註釋都去掉,在轉換分割符的時候 用到了 // 符號,好像它好像會跟註釋衝突。sql