ストアドプロシージャから戻り値を受け取る
スポンサードリンク
MySQL のストアドプロシージャから戻り値を受けとる場合、引数に OUT や INOUT の引数を指定します。
OUT の変数は戻り値の受け取ることしかできませんが、 INOUT は戻り値を受け取るだけでなく、呼び出し側から値を渡すこともできます。
OUT で戻り値を受け取る例
まずは OUT で戻り値を受け取る例です。
ストアドプロシージャの作成
DELIMITER // CREATE PROCEDURE testproc1(OUT prmOut INT) BEGIN SET prmOut = 1234; END // DELIMITER ;
ストアドプロシージャを呼び出して受け取った戻り値を表示
CALL testproc1(@var1); /* 引数に戻り値を受け取る変数 @var1 を渡す */ SELECT @var1; /* @var1 にセットされた値を表示 */
実行例
mysql> DELIMITER // mysql> CREATE PROCEDURE testproc1(OUT prmOut INT) -> BEGIN -> SET prmOut = 1234; -> END -> // Query OK, 0 rows affected (0.00 sec) mysql> DELIMITER ; mysql> CALL testproc1(@var1); /* 引数に戻り値を受け取る変数 @var1 を渡す */ Query OK, 0 rows affected (0.00 sec) mysql> SELECT @var1; /* @var1 にセットされた値を表示 */ +-------+ | @var1 | +-------+ | 1234 | +-------+ 1 row in set (0.00 sec) mysql>
INOUT で戻り値を受け取る例
続いて INOUT で戻り値を受け取る例です。INOUT では、戻り値を受け取るだけでなく、引数として値を渡すこともできます。
ストアドプロシージャの作成
DELIMITER // CREATE PROCEDURE testproc2(INOUT prmInOut INT) BEGIN SET prmInOut = prmInOut + 1234; END // DELIMITER ;
ストアドプロシージャに引数を渡して呼び出して、受け取った戻り値を表示
SET @var2 = 1; /* 引数にセットする変数に値をセット */ CALL testproc2(@var2); /* 引数に戻り値を受け取る変数 @var1 を渡す */ SELECT @var2; /* @var1 にセットされた値を表示 */
実行例
mysql> DELIMITER // mysql> CREATE PROCEDURE testproc2(INOUT prmInOut INT) -> BEGIN -> SET prmInOut = prmInOut + 1234; -> END -> // Query OK, 0 rows affected (0.00 sec) mysql> DELIMITER ; mysql> SET @var2 = 1; /* 引数にセットする変数に値をセット */ Query OK, 0 rows affected (0.00 sec) mysql> CALL testproc2(@var2); /* 引数に戻り値を受け取る変数 @var1 を渡す */ Query OK, 0 rows affected (0.00 sec) mysql> SELECT @var2; /* @var1 にセットされた値を表示 */ +-------+ | @var2 | +-------+ | 1235 | +-------+ 1 row in set (0.00 sec) mysql>
スポンサードリンク