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

MySQLでストアドプロシージャの定義(CREATE文)を表示する方法

ストアドプロシージャの定義を表示するには

MySQLで作成済みのストアドプロシージャの定義(説明)を確認したい場合は、SHOW CREATE PROCEDURE文を使用します。このコマンドを実行すると、プロシージャを作成したときのCREATE文そのものや、sql_mode、文字セットなどの詳細情報を一覧で取得できます。

基本構文

SHOW CREATE PROCEDURE yourProcedureName();

サンプル用ストアドプロシージャの作成

まず、動作確認用のストアドプロシージャを作成してみましょう。

mysql> DELIMITER //
mysql> CREATE PROCEDURE sample_Procedure()
    BEGIN
      SELECT "HELLO MYSQL!!!!";
    END
    //
Query OK, 0 rows affected (0.18 sec)
mysql> DELIMITER ;

ここでは、DELIMITERを一時的に//に変更することで、プロシージャ本体内のセミコロンが文の区切りとして解釈されないようにしています。作成後はデリミタを元の;に戻すのを忘れないようにしましょう。

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

作成したプロシージャは、CALLコマンドで実行できます。

mysql> call sample_Procedure();

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

+-----------------+
| HELLO MYSQL!!!! |
+-----------------+
| HELLO MYSQL!!!! |
+-----------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)

SHOW CREATE PROCEDUREで定義を表示する

先ほど作成したストアドプロシージャの定義を表示するには、以下のクエリを実行します。

mysql> show create procedure sample_Procedure;

実行結果は次のとおりです。

+------------------+--------------------------------------------+-----------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| Procedure        | sql_mode                                   | Create Procedure                                                                        | character_set_client | collation_connection | Database Collation |
+------------------+--------------------------------------------+-----------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| sample_Procedure | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | CREATE DEFINER=`root`@`%` PROCEDURE `sample_Procedure`() BEGIN SELECT "HELLO MYSQL!!!!"; END | utf8                 | utf8_general_ci      | utf8_unicode_ci    |
+------------------+--------------------------------------------+-----------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
1 row in set (0.00 sec)

結果セットには、以下の情報が含まれています。

  • Procedure:プロシージャ名
  • sql_mode:プロシージャ作成時に適用されていたSQLモード
  • Create Procedure:実際のCREATE PROCEDURE文(DEFINER情報を含む)
  • character_set_client / collation_connection / Database Collation:クライアントの文字セットや照合順序の情報

補足:information_schemaから確認する方法

SHOW CREATE PROCEDURE以外にも、information_schema.ROUTINESテーブルを参照することで、プロシージャの定義や作成日時、セキュリティタイプなどのメタ情報を取得できます。

SELECT ROUTINE_NAME, ROUTINE_DEFINITION
FROM information_schema.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE'
  AND ROUTINE_SCHEMA = 'yourDatabaseName';

用途に応じて両方の方法を使い分けると、ストアドプロシージャの管理がより効率的になります。

  1. MySQLのストアドプロシージャでテーブルのレコードを表示する方法

    MySQLでは、ストアドプロシージャ内にSELECT文を組み込むことで、テーブルのレコードを簡単に表示できます。ストアドプロシージャを活用すると、よく使うクエリを再利用可能な形で保存できるため、作業の効率化につながります。ここでは、実際の手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成します。mysql> create table DemoTable1933 ( ClientName varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERT

  2. MySQLストアドプロシージャでテーブルにデータを挿入する方法

    MySQLのストアドプロシージャを使ってテーブルにデータを挿入するには、以下のような構文を使用します。create procedure yourProcedureName(OptionalParameter) begin insert into yourTableName() values(yourValue1,yourValue2,...N); endサンプルテーブルの作成まずは、この構文を実際に理解するために、テスト用のテーブルを作成してみましょう。mysql> create table DemoTable1928 ( Id int NOT NULL