INFORMATION_SCHEMA ROUTINES データ・ディクショナリ・ビューは、ストアドルーチン(ストアドプロシージャとストアド関数)に関する情報を提供しますが、組み込み(ローカル)関数やロード可能な関数は含まれません。 INFORMATION_SCHEMA ROUTINES データ・ディクショナリ・ビューに含まれるフィールドは、以下の表のとおりです。
| フィールド名 | 説明 |
|---|---|
| SPECIFIC_NAME | ストアドプロシージャの名前。 |
| ROUTINE_CATALOG | ストアドプロシージャが属するディレクトリの名前。この値は常に def です。現在、このフィールドは使用されていません。 |
| ROUTINE_SCHEMA | ストアドプロシージャが属するスキーマ(データベース)の名前。 |
| ROUTINE_NAME | ストアドプロシージャの名前。SPECIFIC_NAME と同じです。 |
| ROUTINE_TYPE | ストアドプロシージャのタイプ。ストアドプロシージャは PROCEDURE、ストアドファンクションは FUNCTION です。 |
| DATA_TYPE | プロシージャがストアドファンクションの場合、戻り値のデータ型。プロシージャがストアドプロシージャの場合、この値は空です。DATA_TYPE の値はタイプ名のみで、他の情報は含まれません。DTD_IDENTIFIER の値にはタイプ名と精度や長さなどの他の情報が含まれます。現在、このフィールドは使用されていません。 |
| CHARACTER_MAXIMUM_LENGTH | ストアドファンクションの文字列戻り値の最大長(文字単位)。プロシージャがストアドプロシージャの場合、この値は NULL です。現在、このフィールドは使用されていません。 |
| CHARACTER_OCTET_LENGTH | ストアドファンクションの文字列戻り値の最大長(バイト単位)。プロシージャがストアドプロシージャの場合、この値は NULL です。現在、このフィールドは使用されていません。 |
| NUMERIC_PRECISION | ストアドファンクションの数値戻り値の数値範囲。プロシージャがストアドプロシージャの場合、この値は NULL です。現在、このフィールドは使用されていません。 |
| NUMERIC_SCALE | ストアドファンクションの数値戻り値の数値精度。プロシージャがストアドプロシージャの場合、この値は NULL です。現在、このフィールドは使用されていません。 |
| DATETIME_PRECISION | ストアドファンクションの日付戻り値の小数部分の秒精度。プロシージャがストアドプロシージャの場合、この値は NULL です。現在、このフィールドは使用されていません。 |
| CHARACTER_SET_NAME | ストアドファンクションの文字列戻り値の文字セット名。プロシージャがストアドプロシージャの場合、この値は NULL です。現在、このフィールドは使用されていません |
| COLLATION_NAME | ストアドファンクションの文字列戻り値の照合順序名。プロシージャがストアドプロシージャの場合、この値は NULL です。現在、このフィールドは使用されていません。 |
| DTD_IDENTIFIER | プロシージャがストアドファンクションの場合、戻り値のデータ型。プロシージャがストアドプロシージャの場合、この値は空です。DATA_TYPE の値はタイプ名のみで、他の情報は含まれません。DTD_IDENTIFIER の値にはタイプ名と精度や長さなどの他の情報が含まれます。 |
| ROUTINE_BODY | プロシージャ定義で使用される言語。この値は常にSQLです。 |
| ROUTINE_definition | プロシージャが実行するSQL文のテキスト。 |
| EXTERNAL_NAME | この値は常に NULL です。 |
| EXTERNAL_LANGUAGE | ストアドプロシージャの言語。現在、このフィールドは使用されていません。 |
| PARAMETER_STYLE | この値は常にSQLです。 |
| IS_DETERMINISTIC | 値は YES または NO であり、ストアドプロシージャが DETERMINISTIC 機能の定義を使用しているかどうかによって決まります。現在、このフィールドは使用されていません。 |
| SQL_DATA_ACCESS | プロシージャのデータアクセス特性。この値は CONTAINS SQL、NO SQL、READS SQL DATA、または MODIFIES SQL DATA にすることができます。 |
| SQL_PATH | この値は常に NULL です。 |
| SECURITY_TYPE | プロシージャの SQL SECURITY 機能。この値は DEFINER または INVOKER です。現在、このフィールドは使用されていません。 |
| CREATED | プロシージャを作成した日付と時間。この値の型は TIMESTAMP です。 |
| LAST_ALTERED | ルーチンが最後に変更された日付と時刻。プロシージャが作成されて以来、一度も変更されていない場合、この値はCREATED値と同じになります。 |
| SQL_MODE | ルーチンの作成または変更時に有効なSQLモードであり、そのモードでルーチンが実行されます。 |
| ROUTINE_COMMENT | ルーチンのコメントテキスト(存在する場合)。そうでない場合、この値は空です。 |
| DEFINER | DEFINER句で指定されたアカウント(通常はルーチンを作成したユーザー)で、形式は'user_name'@'host_name'です。 |
| CHARACTER_SET_CLIENT | ストアドルーチンの作成または変更時のシステム変数CHARACTER_SET_CLIENTの現在のセッションの値。 |
| COLLATION_CONNECTION | ストアドルーチンの作成または変更時のシステム変数COLLATION_CONNECTIONの現在のセッションの値。 |
| DATABASE_COLLATION | ストアドルーチンの作成または変更時のシステム変数DATABASE_COLLATIONの現在のセッションの値。 |
例:
obclient> SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA='test' AND ROUTINE_NAME='p1'\G
*************************** 1. row ***************************
SPECIFIC_NAME: p1
ROUTINE_CATALOG: def
ROUTINE_SCHEMA: test
ROUTINE_NAME: p1
ROUTINE_TYPE: PROCEDURE
DATA_TYPE:
CHARACTER_MAXIMUM_LENGTH: NULL
CHARACTER_OCTET_LENGTH: NULL
NUMERIC_PRECISION: NULL
NUMERIC_SCALE: NULL
DATETIME_PRECISION: NULL
CHARACTER_SET_NAME: NULL
COLLATION_NAME: NULL
DTD_IDENTIFIER: NULL
ROUTINE_BODY: SQL
ROUTINE_DEFINITION: BEGIN
# Set value of OUT parameter
SELECT VERSION() INTO ver_param;
# Increment value of INOUT parameter
SET incr_param = incr_param + 1;
END
EXTERNAL_NAME: NULL
EXTERNAL_LANGUAGE: NULL
PARAMETER_STYLE: SQL
IS_DETERMINISTIC: NO
SQL_DATA_ACCESS: CONTAINS_SQL
SQL_PATH: NULL
SECURITY_TYPE: DEFINER
CREATED: 2022-05-18 18:07:51.994639
LAST_ALTERED: 2022-05-26 18:07:51.994639
SQL_MODE: STRICT_ALL_TABLES,NO_ZERO_IN_DATE
ROUTINE_COMMENT:
DEFINER: 'root'@'%'
CHARACTER_SET_CLIENT: utf8mb4
COLLATION_CONNECTION: utf8mb4_general_ci
DATABASE_COLLATION: utf8mb4_general_ci