SHOW CREATE FUNCTIONでMySQLストアド関数のソースコード(定義)を確認する方法
MySQLでは、SHOW CREATE FUNCTIONステートメントを使用することで、特定のストアド関数の定義(ソースコード)を簡単に確認できます。このステートメントを実行すると、関数名、作成時のSQLモード、CREATE FUNCTION文そのもの、さらには文字セットや照合順序などの情報が一覧形式で出力されます。
基本構文
SHOW CREATE FUNCTION 関数名;
末尾に\Gを付けて実行すると、結果が縦方向に整形されて表示されるため、長い定義でも読みやすくなります。
実行例:Hello()関数のソースコードを表示する
ここでは、あらかじめ作成しておいた「Hello()」というストアド関数の定義を確認してみましょう。以下のようにコマンドを実行します。
mysql> SHOW CREATE FUNCTION Hello\G
*************************** 1. row ***************************
Function: Hello
sql_mode:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Create Function: CREATE DEFINER=`root`@`localhost` FUNCTION `Hello`(S Varchar(20)) RETURNS varchar(20) CHARSET latin1 DETERMINISTIC
RETURN CONCAT('Hello, ',S,'!')
character_set_client: cp850
collation_connection: cp850_general_ci
Database Collation: latin1_swedish_ci
1 row in set (0.00 sec)出力結果の各項目の意味
- Function: ストアド関数の名前です。
- sql_mode: 関数を作成したときに有効だったSQLモードの一覧です。
- Create Function: この関数を再現できる完全なCREATE FUNCTION文です。実質的にこれが「ソースコード」と呼べる部分であり、DEFINER(作成者)や引数・戻り値の型、DETERMINISTIC属性なども含まれます。
- character_set_client / collation_connection: 関数作成時に使用されたクライアント側の文字セットと照合順序です。
- Database Collation: 対象データベースの既定の照合順序です。
INFORMATION_SCHEMAから確認する代替方法
MySQL 5.0以降では、INFORMATION_SCHEMA.ROUTINESテーブルに対してSELECT権限を持っていれば、ROUTINE_DEFINITIONカラムからも関数の定義内容を取得できます。
SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'FUNCTION' AND ROUTINE_NAME = 'Hello';
この方法は、スクリプトやアプリケーションからプログラム的に定義を取り出したい場合にも便利です。なお、他ユーザーが作成したルーチンの定義を閲覧するには、適切な権限が必要になる点に注意してください。
-
特定のMySQLデータベースに保存されているビューの一覧を確認する方法
MySQLでは、いくつかの異なるクエリを使って、特定のデータベースに保存されているビュー(VIEW)の一覧を簡単に確認できます。この記事では、「query」という名前のデータベースを例に、代表的な3つの方法を紹介します。 1. information_schemaを使ってビュー一覧を取得する まずは、information_schemaデータベースのTABLESテーブルを参照する方法です。TABLE_TYPEが「VIEW」であるレコードを抽出し、TABLE_SCHEMAで対象のデータベースを指定することで、そのデータベース内のビューだけを一覧表示できます。 mysql> SELECT
-
MySQLで特定のデータベース内にあるビューのメタデータを確認する方法
MySQLでは、INFORMATION_SCHEMA データベース内の VIEWS テーブルを参照することで、ビューのメタデータ(ビューに関する定義情報)を確認できます。このテーブルには、ビューの定義内容や作成者、更新可否などの詳細が格納されています。ここでは、「Info」という名前のビューを例に、具体的な確認方法を見ていきましょう。ビューのメタデータを取得するクエリ以下のクエリを実行すると、「query」データベース内の「Info」というビューのメタデータを表示できます。mysql> SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_