mysql如何跳出存储过程的执行


 很多小伙伴都知道使用leave label来跳出循环,但是在实际的需求可能需要跳出整个存储过程而mysql又不支持quit,exit或return的方式退出。

这里我们依然使用leave的方式来模拟exit的作用(见2)。


1,一般用法,跳出循环

 Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `test`(p1 INT)
BEGIN
  label1: LOOP
    SET p1 = p1 + 1;
    IF p1 < 10 THEN 
     select 'repeate';
     ITERATE label1; 
    END IF;
    select 'skip';
    LEAVE label1; 
  END LOOP label1;
  SET @x = p1;
  select @x;  
END
执行
MariaDB [test]> call test(8);
+---------+
| repeate |
+---------+
| repeate |
+---------+
1 row in set (0.00 sec)
+------+
| skip |
+------+
| skip |
+------+
1 row in set (0.00 sec)
+------+
| @x   |
+------+
|   10 |
+------+  


2,直接跳出整个存储过程体
CREATE DEFINER=`root`@`localhost` PROCEDURE b (p int) 
label:begin 
declare i int ; 
set i=p; 
if i<1 then  leave label; 
else  select i ;
 end if ; 
end
调用如下:
传入参数小于1 直接跳出存储过程
 call b(-1);
Query OK, 0 rows affected (0.00 sec)
传入参数大于1 直接输出传入的值
call b(2); 
+------+
| i    |
+------+
|    2 |
+------+
实际结果和测试情况一致。
就简单的记录到此,希望对你有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值