「这是我参与2022首次更文挑战的第25天,活动详情查看:2022首次更文挑战」
MySQL的存储过程
在分库分表流行的今天,存储过程越来越不被推荐使用。存储过程作为一种和数据库强依赖的技术,对数据库的迁移不是特别友好,如果我们要从MySQL迁移到其它数据库,可能就要重新写所有的存储过程,而且存储过程执行逻辑不好调试,排错困难。
虽然它有这么多缺点,但是了解下还是有必要的,毕竟在开发环境中,有时候能用存储过程提高我们的开发效率。存储过程的结构如下:
delimiter //
CREATE PROCEDURE dorepeat(p1 INT)
BEGIN
SET @x = 0;
REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
END;//
delimiter ;
在MySQL控制台,分号;是默认的分割符,MySQL遇到分割符就会将输入的语句去执行,如果你是在控制台当中创建存储过程,那么你就需要把分割符换成其它字符去表示,如我们这个实例为//,delimiter就是用来分隔符的,在创建完成之后可以用delimiter ;将分隔符还原回来。以上实例执行完成之后MySQL输出如下:
我们可以看到MySQL成功执行了该创建语句,我们现在来看下怎么执行:
执行存储过程很简单,就是用
call 存储过程名(...参数)就可以调用我们的存储过程,执行完毕MySQL的输出如上。和我们写Java差不多,就是调用一下的事情,无非就是多了个call。存储过程需要的基础结构必须要有create procedure 存储过程名(... 参数名) begin 你的代码在这! end;。和Java不同,创建存储过程要用begin和end将你的代码包裹起来,我们编码的过程中需要用到变量要在前面用@标上,取值也是用@标上。循环可以用repeat加until和end来做到Java中while循环的作用。