以下は、MySQLでストアドプロシージャの完全なリストを返すための2つのオプションです。
SHOW PROCEDURE STATUS
コマンド
すべてのストアドプロシージャを一覧表示する最も簡単な方法は、SHOW PROCEDURE STATUS
を使用することです。 コマンド。
以下を実行するだけで、すべてのストアドプロシージャが一覧表示されます。
SHOW PROCEDURE STATUS;
構文は次のようになります:
SHOW PROCEDURE STATUS
[LIKE 'pattern' | WHERE expr]
したがって、LIKE
を使用できます またはWHERE
結果を絞り込むための句。
例:
SHOW PROCEDURE STATUS LIKE 'albums%';
結果:
+-------+------------------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +-------+------------------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Music | spAlbumsByGenre | PROCEDURE | [email protected] | 2021-11-13 13:09:26 | 2021-11-13 13:09:26 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | | Music | spAlbumsFromArtistId | PROCEDURE | [email protected] | 2021-11-13 13:03:25 | 2021-11-13 13:03:25 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | | Music | spAlbumsFromArtistName | PROCEDURE | [email protected] | 2021-11-13 13:03:48 | 2021-11-13 13:03:48 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | +-------+------------------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
information_schema.routines
表
MySQLのストアドプロシージャのリストを取得する別の方法は、information_schema.routines
にクエリを実行することです。 テーブル。
例:
SELECT
routine_schema as "Database",
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'PROCEDURE'
ORDER BY
routine_schema ASC,
routine_name ASC;
このテーブルには、格納されている関数に関する情報も格納されています。上記の例では、WHERE
を使用してそれらを除外しました ストアドプロシージャ(つまり、routine_type
を持つオブジェクト)のみを返す句 PROCEDURE
の 。
保存された関数を含めるために、WHERE
を削除できます 条項:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
ORDER BY
routine_schema ASC,
routine_name ASC;
この場合、routine_type
も追加しました 手順と機能を区別できるように列を作成します。
結果から特定のデータベースを除外することもできます:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema NOT IN ('sys', 'information_schema', 'mysql', 'performance_schema')
ORDER BY
routine_schema ASC,
routine_name ASC;
これが私のテスト環境で返されるものです:
+----------+------------------------+--------------+ | Database | ROUTINE_NAME | ROUTINE_TYPE | +----------+------------------------+--------------+ | Music | spAlbumsByGenre | PROCEDURE | | Music | spAlbumsFromArtistId | PROCEDURE | | Music | spAlbumsFromArtistName | PROCEDURE | | Music | spArtistFromId | PROCEDURE | | PetHotel | spGetAllPets | PROCEDURE | | PetHotel | spGetPetById | PROCEDURE | +----------+------------------------+--------------+
特定のデータベースに絞り込むこともできます:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema = 'music'
ORDER BY
routine_name ASC;
結果:
+----------+------------------------+--------------+ | Database | ROUTINE_NAME | ROUTINE_TYPE | +----------+------------------------+--------------+ | Music | spAlbumsByGenre | PROCEDURE | | Music | spAlbumsFromArtistId | PROCEDURE | | Music | spAlbumsFromArtistName | PROCEDURE | | Music | spArtistFromId | PROCEDURE | +----------+------------------------+--------------+