1. 程式人生 > >mysql如何跳出儲存過程的執行

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 |
+------+
實際結果和測試情況一致。
就簡單的記錄到此,希望對你有幫助。