MySQLでやりたいことから調べられるリファレンス

MySQL 逆引きリファレンス

ストアドプロシージャから戻り値を受け取る

スポンサードリンク

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>
スポンサードリンク

ストアドプロシージャ

その他のカテゴリー一覧