mysql使用存储过程

MySQL的存储过程和函数
MySQL函数和存储过程

存储过程和函数的概述

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。

函数:有返回值的过程
过程:没有返回值的函数

循环执行语句

有很多业务场景需要循环调用语句来插入、删除、更新等操作。
可以先键一个存储过程,然后call 调用。
以Navicat为例:
在这里插入图片描述
点击函数,选择过程,填写存储过程的名称,点击下一步可以填写存储过程的参数,不添加就是无参数的存储过程。点完成创建一个存储过程。

CREATE DEFINER=`root`@`localhost` PROCEDURE `test`(IN `money` double)
BEGIN
	#Routine body goes here...
    DECLARE i INT DEFAULT 0;
    WHILE i<=5 DO
        UPDATE account a
				SET a.money = money
				WHERE a.id = i;
    SET i=i+1;
    END WHILE;
END

使用call 函数名(参数值)的方法来调用存储过程
在调用前,库里的值是5000
在这里插入图片描述
调用存储过程,传参10000
在这里插入图片描述
刷新库里值,已更新为10000
在这里插入图片描述

三种循环方式

存储过程执行循环语句有三种方式:

  1. WHILE
WHILE expression DO
  statements
END WHILE;

即刚刚上面例子使用的语句

  1. REPEAT
REPEAT
 statements;
UNTIL expression END REPEAT;

对于刚刚的例子,代码如下:

CREATE DEFINER=`root`@`localhost` PROCEDURE `test`(IN `money` double)
BEGIN
	#Routine body goes here...
    DECLARE i INT DEFAULT 0;
    REPEAT
        UPDATE account a
				SET a.money = money
				WHERE a.id = i;
    SET i=i+1;
    UNTIL i > 5 END REPEAT;
END
  1. LOOP
[begin_label:] LOOP
	statement_list
END LOOP [end_label]

注意:如果不在statement_list中增加退出循环的语句,那么LOOP语句可以用来实现简单的死循环。
[begin_label:]是一个别名,可写可不写
对于刚刚的例子,代码如下:

CREATE DEFINER=`root`@`localhost` PROCEDURE `test`(IN `money` double)
BEGIN
	#Routine body goes here...
  DECLARE i INT DEFAULT 0;
	label1: LOOP
	  UPDATE account a
	  SET a.money = money
		WHERE a.id = i;
		SET i=i+1;
	  IF i>5 THEN
		 LEAVE label1; 
	  END IF; 
  END LOOP label1;
END
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值