Poniżej znajdują się dwie opcje zwracania pełnej listy procedur składowanych w MySQL.
SHOW PROCEDURE STATUS Polecenie
Najszybszym sposobem wyświetlenia listy wszystkich procedur składowanych jest użycie SHOW PROCEDURE STATUS polecenie.
Po prostu uruchom następujące polecenie, aby wyświetlić wszystkie procedury składowane:
SHOW PROCEDURE STATUS; Składnia wygląda tak:
SHOW PROCEDURE STATUS
[LIKE 'pattern' | WHERE expr]
Możesz więc użyć LIKE lub WHERE klauzula, aby zawęzić wyniki.
Przykład:
SHOW PROCEDURE STATUS LIKE 'albums%'; Wynik:
+-------+------------------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +-------+------------------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Music | spAlbumsByGenre | PROCEDURE | example@sqldat.com | 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 | example@sqldat.com | 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 | example@sqldat.com | 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 Tabela
Innym sposobem uzyskania listy procedur składowanych w MySQL jest zapytanie o information_schema.routines tabela.
Przykład:
SELECT
routine_schema as "Database",
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'PROCEDURE'
ORDER BY
routine_schema ASC,
routine_name ASC;
Ta tabela przechowuje również informacje o przechowywanych funkcjach. W powyższym przykładzie wykluczyłem je za pomocą WHERE klauzula zwracająca tylko procedury składowane (tj. obiekty z routine_type z PROCEDURE ).
Aby uwzględnić zapisane funkcje, możemy usunąć WHERE klauzula:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
ORDER BY
routine_schema ASC,
routine_name ASC;
W tym przypadku dodałem również routine_type kolumna, abyśmy mogli rozróżnić procedury i funkcje.
Możemy również wykluczyć niektóre bazy danych z wyniku:
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; Oto, co to zwraca w moim środowisku testowym:
+----------+------------------------+--------------+ | Database | ROUTINE_NAME | ROUTINE_TYPE | +----------+------------------------+--------------+ | Music | spAlbumsByGenre | PROCEDURE | | Music | spAlbumsFromArtistId | PROCEDURE | | Music | spAlbumsFromArtistName | PROCEDURE | | Music | spArtistFromId | PROCEDURE | | PetHotel | spGetAllPets | PROCEDURE | | PetHotel | spGetPetById | PROCEDURE | +----------+------------------------+--------------+
Możemy również zawęzić go do konkretnej bazy danych:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema = 'music'
ORDER BY
routine_name ASC; Wynik:
+----------+------------------------+--------------+ | Database | ROUTINE_NAME | ROUTINE_TYPE | +----------+------------------------+--------------+ | Music | spAlbumsByGenre | PROCEDURE | | Music | spAlbumsFromArtistId | PROCEDURE | | Music | spAlbumsFromArtistName | PROCEDURE | | Music | spArtistFromId | PROCEDURE | +----------+------------------------+--------------+