SHOW CREATE PROCEDURE ステートメントは、作成されたストアドプロシージャの情報を表示するために使用されます。
SHOW CREATE PROCEDURE ステートメントの構文は次のとおりです:
SHOW CREATE PROCEDURE proc_name
このステートメントを使用するには、DEFINER が定義したユーザーであり、SHOW_ROUTINE 権限、グローバルレベルの SELECT 権限、またはそのルーチンに対する CREATE ROUTINE、ALTER ROUTINE、または EXECUTE 権限を持っている必要があります。CREATE ROUTINE、ALTER ROUTINE、または EXECUTE 権限のみを持つ場合、Create Procedure(プロシージャの作成)または Create Function(関数の作成)フィールドの値は NULL と表示されます。
SHOW CREATE PROCEDURE は以下の情報を出力します:
Procedure:ストアドプロシージャ名。sql_mode:ストアドプロシージャ実行時に有効なSQLモード。Create Procedure:ストアドプロシージャを定義するCREATE PROCEDUREステートメント。character_set_client:ストアドプロシージャ作成時のcharacter_set_clientシステム変数の現在のセッションでの値。collation_connection:ストアドプロシージャ作成時のcollation_connectionシステム変数の現在のセッションでの値。Database Collation:ストアドプロシージャに関連付けられたデータベースの照合順序。
ストアドプロシージャの情報は、INFORMATION_SCHEMA ROUTINES テーブルからも取得できます。詳細については、INFORMATION_SCHEMA PARAMETERSを参照してください。
SHOW CREATE PROCEDURE ステートメントの例は以下のとおりです:
obclient> SHOW CREATE PROCEDURE proc_name;
実行結果は次のとおりです:
+-------------+----------+-----------------+-----------------------+----------------------+--------------------+
| Procedure | sql_mode | Create Procedure | character_set_client | collation_connection | Database Collation |
+----------+----------+-----------------+-----------------------+----------------------+-----------------------+
| proc_name | STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE |CREATE PROCEDURE `test`.`proc_name`() BEGIN DECLARE var_name VARCHAR(20) DEFAULT 'ZhangSan'; SET var_name = 'LiSi'; SELECT var_name; END | utf8mb4 | utf8mb4_general_ci | utf8mb4_general_ci |
+----------+----------+-----------------+-----------------------+----------------------+-----------------------+
1 row in set