MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのプリペアドステートメントで戻り値を取得する方法をわかりやすく解説

MySQLでは、ストアドプロシージャ内でプリペアドステートメント(PREPARE文)を実行し、その結果をユーザー定義変数(@変数)に格納することで、戻り値を取得できます。ここでは、実際にストアドプロシージャを作成し、プリペアドステートメントから戻り値を選択する手順を紹介します。

ストアドプロシージャの作成

まず、プリペアドステートメントを実行して値を変数に格納するストアドプロシージャ「return_value」を作成します。

mysql> DELIMITER //
mysql> CREATE PROCEDURE return_value()
    -> BEGIN
    ->   SET @returnQuery = 'SELECT 98 INTO @value';
    ->   PREPARE stmt FROM @returnQuery;
    ->   EXECUTE stmt;
    -> END
    -> //
Query OK, 0 rows affected (0.20 sec)

mysql> DELIMITER ;

処理の流れ

  • SET @returnQuery:実行したいSQL文を文字列としてユーザー定義変数に格納します。
  • PREPARE stmt:文字列として渡されたSQLをプリペアドステートメントとして準備します。
  • EXECUTE stmt:準備したステートメントを実行し、結果を@valueに代入します。

ストアドプロシージャの呼び出し

作成したストアドプロシージャは、CALLコマンドを使って呼び出します。

mysql> CALL return_value();
Query OK, 1 row affected (0.07 sec)

戻り値の確認

SELECT文を使って、変数@valueに格納された値を表示します。

mysql> SELECT @value;

実行結果

上記のSELECT文を実行すると、次のような出力が得られます。

+--------+
| @value |
+--------+
|     98 |
+--------+
1 row in set (0.00 sec)

このように、プリペアドステートメント内で「SELECT ... INTO」構文を使用することで、動的に組み立てたSQLの実行結果を変数に保存し、後から自由に参照することが可能になります。動的なクエリを実行しつつ結果を受け取りたい場合に便利なテクニックです。

  1. MySQLでテーブルの最後の10件のレコードを取得する方法

    MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected

  2. JavaでMySQLのSELECTクエリにPreparedStatement(プリペアドステートメント)を使う方法

    executeQuery()メソッドの基本的な使い方JavaからMySQLに対してSELECTクエリを実行する場合は、PreparedStatementオブジェクトのexecuteQuery()メソッドを使用します。基本構文は以下の通りです。yourPreparedStatementObject = yourConnectionObject.prepareStatement(yourQueryName);yourResultSetObject = yourPreparedStatementObject.executeQuery();それでは、実際にサンプルデータベース「sample」を使って手