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

MySQLストアドプロシージャを呼び出すにはどうすればよいですか?

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

MySQLで作成済みのストアドプロシージャを実行するには、CALLステートメントを使用します。CALLは、データベース内に定義されたプロシージャを明示的に呼び出すための専用コマンドです。

基本構文

CALL プロシージャ名();

引数を持つプロシージャの場合は、括弧内にカンマ区切りで値を渡します。

CALL プロシージャ名(引数1, 引数2, ...);

実行例:allrecords()プロシージャの呼び出し

ここでは、テーブル内の全レコードを取得する「allrecords()」というストアドプロシージャを呼び出してみましょう。

mysql> CALL allrecords();
+------+---------+------------+------------+
| id   | Name    | Address    | Subject    |
+------+---------+------------+------------+
| 100  | Aarav   | Delhi      | Computers  |
| 101  | YashPal | Amritsar   | History    |
| 105  | Gaurav  | Jaipur     | Literature |
| 110  | Rahul   | Chandigarh | History    |
+------+---------+------------+------------+
4 rows in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)

このように、CALLステートメントの後にプロシージャ名を指定するだけで、プロシージャ内に記述された処理が実行され、結果セットが返されます。

ポイント

  • ストアドプロシージャはSELECT文ではなくCALL文で呼び出します。
  • 引数が必要なプロシージャでは、正しい順序とデータ型で値を渡す必要があります。
  • 存在しないプロシージャ名を指定するとエラーになるため、事前に SHOW PROCEDURE STATUS; で確認しておくと安心です。
  1. MySQLのストアドプロシージャ内でSTART TRANSACTIONを実行する方法

    MySQLでは、START TRANSACTIONを実行すると新しいトランザクションが開始され、自動コミット(auto-commit)モードがオフに設定されます。これにより、明示的にCOMMITまたはROLLBACKを実行するまで、データの変更内容は確定されません。以下の例では、START TRANSACTIONを含むストアドプロシージャを作成し、employee.tblテーブルに新しいレコードを挿入します。まず、対象となるテーブルには現在、次のデータが格納されています。mysql> Select * from employee.tbl; +----+---------+ | Id |

  2. MySQLストアドプロシージャ内で別のストアドプロシージャを呼び出す方法

    MySQLのストアドプロシージャは、その内部で別のストアドプロシージャを呼び出すことが可能です。これはCALLステートメントを使用することで実現でき、処理をモジュール化して再利用性を高める上で非常に便利な機能です。ここでは、あるストアドプロシージャが別のストアドプロシージャを呼び出し、last_insert_id()を取得する具体例を見ていきましょう。サンプルテーブルの作成まず、例として使用するテーブルを作成します。以下のテーブルは、自動採番されるIDと名前を持つ従業員テーブルです。mysql> CREATE TABLE employee.tbl(Id INT NOT NULL AUTO