创建存储过程
mysql:
CREATE PROCEDURE dorepeat(p1 INT)
BEGIN
SET @x = 0;
REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
END;
执行存储过程
mysql:
CALL sp_name([parameter[,...]])
CALL sp_name[()]
使用OUT参数和INOUT参数:
CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
# Set value of OUT parameter
SELECT VERSION() INTO ver_param;
# Increment value of INOUT parameter
SET incr_param = incr_param + 1;
END;
mysql> SET @increment = 10;
mysql> CALL p(@version, @increment);
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log | 11 |
+--------------------+------------+
PREPARE和EXECUTE结合使用执行存储过程:
mysql> SET @increment = 10;
mysql> PREPARE s FROM 'CALL p(?, ?)';
mysql> EXECUTE s USING @version, @increment;
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log | 11 |
+--------------------+------------+
网友评论