Mysql
 sql >> Baza danych >  >> RDS >> Mysql

2 sposoby na wyświetlenie wszystkich procedur składowanych w MySQL

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 | [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 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    |
+----------+------------------------+--------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co jest szybsze:wiele pojedynczych WSTAWEK czy jedna wielowierszowa WSTAWKA?

  2. Napraw „ERROR 3942 (HY000):Każdy wiersz klauzuli VALUES musi mieć co najmniej jedną kolumnę” podczas korzystania z instrukcji VALUES w MySQL

  3. pojedyncza ustalona tabela z wieloma kolumnami vs elastyczne tabele abstrakcyjne

  4. 15 podstawowych pytań do rozmowy kwalifikacyjnej na temat MySQL dla administratorów baz danych

  5. Jak działa funkcja RPAD() w MySQL