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

MySQLで列の値を返すストアドプロシージャの作成方法

MySQLでは、ストアドプロシージャにOUTパラメータを定義し、SELECT ... INTO構文と組み合わせることで、テーブルの特定の列の値を取得して呼び出し元へ返すことができます。ここでは、IDを渡すと対応するスコア(Score)を返すストアドプロシージャを、実際の手順に沿って解説します。

1. サンプルテーブルの作成

まず、動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable
    -> (
    -> Id int,
    -> Score int
    -> );
Query OK, 0 rows affected (0.69 sec)

2. レコードの挿入

続いて、INSERTコマンドを使ってテーブルに複数のレコードを追加します。

mysql> insert into DemoTable values(1,858858686);
Query OK, 1 row affected (0.11 sec)

mysql> insert into DemoTable values(2,9900554);
Query OK, 1 row affected (0.22 sec)

mysql> insert into DemoTable values(3,646565667);
Query OK, 1 row affected (0.15 sec)

3. レコードの確認

SELECT文で、テーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

出力結果

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

+------+-----------+
| Id   | Score     | 
+------+-----------+
| 1    | 858858686 |
| 2    | 9900554   |
| 3    | 646565667 |
+------+-----------+
3 rows in set (0.00 sec)

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

次に、IDを入力パラメータ(IN)として受け取り、該当するScoreの値を出力パラメータ(OUT)に格納して返すストアドプロシージャを作成します。

mysql> DELIMITER //
mysql> CREATE PROCEDURE Test_StoredProcedure(in id INT, OUT scoreValue INT)
-> BEGIN
-> SELECT Score
-> INTO scoreValue
-> FROM DemoTable tbl
-> WHERE tbl.Id = id;
-> END
-> //
Query OK, 0 rows affected (0.18 sec)
mysql> DELIMITER ;

このプロシージャでは、WHERE句で指定されたIDに一致するレコードのScore列を検索し、その値をSELECT ... INTOによってOUTパラメータ「scoreValue」に代入しています。

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

CALLコマンドでストアドプロシージャを実行し、結果を「@result」というユーザー定義変数に格納します。第2引数には、結果を受け取る変数を指定します。

mysql> call Test_StoredProcedure(2,@result);
Query OK, 1 row affected (0.00 sec)

6. 結果の確認

最後に、SELECT文で変数の中身を表示します。

mysql> select @result;

出力結果

+---------+
| @result |
+---------+
| 9900554 |
+---------+
1 row in set (0.00 sec)

ID=2のレコードに対応するScore「9900554」が正しく返されていることが確認できます。このようにOUTパラメータを活用すれば、ストアドプロシージャから単一の列値を簡単に取得でき、アプリケーション側でのデータ参照にも便利です。

  1. MySQLストアドプロシージャでIF-ELSEを実装する方法

    MySQLのストアドプロシージャ内で条件分岐を行いたい場合、IF-ELSE構文を使用します。この記事では、基本構文から実際のストアドプロシージャの作成・実行まで、サンプルコード付きでわかりやすく解説します。IF-ELSEの基本構文ストアドプロシージャ内でif-elseを実装するには、以下の構文を使用します。if yourCondition then yourStatement1; else yourStatement2; end if;条件式(yourCondition)が真(TRUE)の場合は最初のステートメントが実行され、偽(FALSE)の場合はelse以降のステートメント

  2. MySQLストアドプロシージャでカラムの値を変数に格納する方法

    MySQLのストアドプロシージャ内で変数を宣言するには、DECLARE文を使用します。さらにSELECT ~ INTO構文を組み合わせることで、テーブルのカラム値を変数に格納することができます。ここでは、実際にサンプルテーブルを作成し、ストアドプロシージャ経由でカラムの値を変数に取得する手順を解説します。1. サンプルテーブルの作成まず、以下のようにテーブルを作成します。mysql> create table DemoTable2034-> (-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,-> StudentN