mysql如何跳出儲存過程的執行
阿新 • • 發佈:2019-02-09
很多小夥伴都知道使用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 |
+------+
實際結果和測試情況一致。
就簡單的記錄到此,希望對你有幫助。