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 ;
呼叫( CALL )儲存過程:
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