最开始写 mysql 存储过程的时候 老是因为这种莫名其妙的原因报错,百度了说是不太支持,今天再试了一下发现成功了,我的mysql数据的版本是5.7 。现在的一些工具,真的是越做越好啊。努力学习,不能埋没了他们。
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; -- 查看存储过程的原码
上面就是我今天所用到的一些存储过程的一下操作,在调试这个存储过程的时候最好是吧注释都去掉,在转换分割符的时候 用到了 // 符号,好像它好像会跟注释冲突。