mysql中的存儲過程常見操做

    最開始寫 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

相關文章
相關標籤/搜索