MySQL 具有IN,OUT,INOUT参数的存储过程
示例
DELIMITER $$
DROP PROCEDURE IF EXISTS sp_nested_loop$$
CREATE PROCEDURE sp_nested_loop(IN i INT, IN j INT, OUT x INT, OUT y INT, INOUT z INT)
BEGIN
DECLARE a INTEGER DEFAULT 0;
DECLARE b INTEGER DEFAULT 0;
DECLARE c INTEGER DEFAULT 0;
WHILE a < i DO
WHILE b < j DO
SET c = c + 1;
SET b = b + 1;
END WHILE;
SET a = a + 1;
SET b = 0;
END WHILE;
SET x = a, y = c;
SET z = x + y + z;
END $$
DELIMITER ;调用(调用)存储过程:
SET @z = 30; call sp_nested_loop(10, 20, @x, @y, @z); SELECT @x, @y, @z;
结果:
+------+------+------+ | @x | @y | @z | +------+------+------+ | 10 | 200 | 240 | +------+------+------+
一个IN参数传送一个值的过程。该过程可能会修改该值,但是该过程返回时,调用者看不到该修改。
一个OUT参数传送从过程返回给调用者的值。在过程中,其初始值为NULL,并且在过程返回时,调用者可以看到其初始值。
一个INOUT参数是由呼叫者初始化,可以由程序进行修改,并且由所述方法制备的任何变化是可见的呼叫者时,过程返回。
参考:http://dev.mysql.com/doc/refman/5.7/en/create-procedure.html