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

SELECTでテーブル全体を返すMySQLストアドプロシージャの作成方法

MySQLでは、ストアドプロシージャ内でSELECT文を実行することで、引数で渡した条件に一致するレコード(この例ではテーブル全体)を結果として返すことができます。ここでは、テーブルの作成からプロシージャの呼び出しまで、手順を追って解説します。

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

まず、テーブルを作成します。

mysql> create table DemoTable1971
    (
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName varchar(20),
    StudentPassword int
    );
Query OK, 0 rows affected (0.00 sec)

2. レコードの挿入

insertコマンドを使って、テーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable1971(StudentName,StudentPassword) values('John','123456');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1971(StudentName,StudentPassword) values('Chris','123456');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1971(StudentName,StudentPassword) values('David','123456');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1971(StudentName,StudentPassword) values('Mike','123456');
Query OK, 1 row affected (0.00 sec)

3. テーブルの内容を確認

select文でテーブルの全レコードを表示して確認します。

mysql> select * from DemoTable1971;

実行すると、次のような出力が得られます。

+-----------+-------------+-----------------+
| StudentId | StudentName | StudentPassword |
+-----------+-------------+-----------------+
|         1 | John        |         123456 |
|         2 | Chris       |         123456 |
|         3 | David       |         123456 |
|         4 | Mike        |         123456 |
+-----------+-------------+-----------------+
4 rows in set (0.00 sec)

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

続いて、ストアドプロシージャを作成するクエリです。まずdelimiterを「//」に変更してから、CREATE PROCEDURE文でプロシージャを定義します。

mysql> delimiter //
mysql> create procedure returnAll(pass varchar(30))
    begin
    select * from DemoTable1971 where StudentPassword=pass;
    end
    //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;

ポイント: delimiter文は、プロシージャ本体に含まれる「;」をMySQLの文の終端と誤認識しないようにするために使用します。定義が完了したら、忘れずにdelimiterを元の「;」へ戻しておきましょう。

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

作成したストアドプロシージャは、CALLコマンドで呼び出すことができます。

mysql> call returnAll('123456');

実行すると、StudentPasswordが引数「123456」と一致するレコード、つまりこの場合はテーブル全体が表示されます。

+-----------+-------------+-----------------+
| StudentId | StudentName | StudentPassword |
+-----------+-------------+-----------------+
|         1 | John        |         123456 |
|         2 | Chris       |         123456 |
|         3 | David       |         123456 |
|         4 | Mike        |         123456 |
+-----------+-------------+-----------------+
4 rows in set (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)

まとめ

このように、ストアドプロシージャ内でSELECT文を使えば、引数で渡した条件に一致するレコード一式を簡単に取得できます。アプリケーション側からはCALL文を呼び出すだけで済むため、SQLの再利用性や保守性が向上するというメリットもあります。ぜひ実際の開発でも活用してみてください。

  1. JavaでMySQLテーブルのカラム数を取得・カウントする方法

    MySQLテーブルのカラム(列)数をJavaで取得するには、ResultSetMetaDataインターフェースを使用します。ResultSetMetaDataを活用すれば、カラムの総数だけでなく、各カラムの名前やデータ型といった詳細情報も簡単に取得できます。前提:サンプルテーブルの作成まずは動作確認用のテーブルを作成しましょう。以下のSQLでは、3つのカラムを持つ「DemoTable」を作成しています。mysql> create table DemoTable     -> (     -> St

  2. MySQLでテーブルの日付レコードを変更する方法|UPDATEとDATE_ADD()の使い方

    MySQLで保存済みの日付データに年数を加算して変更したい場合、UPDATEコマンドとDATE_ADD()関数を組み合わせることで簡単に実現できます。ここでは、実際のSQLクエリ例を使いながら、日付レコードを変更する手順を順番に解説します。1. テーブルを作成するまず、日付型(date)のカラムを持つテーブルを作成します。mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERTコマンドを使ってテ