sql >> Databáze >  >> RDS >> Mysql

2 způsoby, jak vypsat všechny uložené procedury v MySQL

Níže jsou dvě možnosti, jak vrátit úplný seznam uložených procedur v MySQL.

SHOW PROCEDURE STATUS Příkaz

Nejrychlejší způsob, jak vypsat všechny uložené procedury, je použít SHOW PROCEDURE STATUS příkaz.

Jednoduše spusťte následující, abyste vypsali všechny uložené procedury:

SHOW PROCEDURE STATUS;

Syntaxe vypadá takto:

SHOW PROCEDURE STATUS
    [LIKE 'pattern' | WHERE expr]

Můžete tedy použít LIKE nebo WHERE klauzule pro zúžení výsledků.

Příklad:

SHOW PROCEDURE STATUS LIKE 'albums%';

Výsledek:

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

Dalším způsobem, jak získat seznam uložených procedur v MySQL, je dotaz na information_schema.routines tabulka.

Příklad:

SELECT 
    routine_schema as "Database",
    routine_name
FROM 
    information_schema.routines
WHERE 
    routine_type = 'PROCEDURE'
ORDER BY 
    routine_schema ASC, 
    routine_name ASC;

Tato tabulka také obsahuje informace o uložených funkcích. Ve výše uvedeném příkladu jsem je vyloučil pomocí WHERE klauzule k vrácení pouze uložených procedur (tj. objektů s routine_type z PROCEDURE ).

Chcete-li zahrnout uložené funkce, můžeme odstranit WHERE klauzule:

SELECT 
    routine_schema as "Database",
    routine_name,
    routine_type
FROM 
    information_schema.routines
ORDER BY 
    routine_schema ASC, 
    routine_name ASC;

V tomto případě jsem také přidal routine_type abychom mohli rozlišovat mezi procedurami a funkcemi.

Z výsledku můžeme také vyloučit určité databáze:

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;

V mém testovacím prostředí to vrací toto:

+----------+------------------------+--------------+
| Database | ROUTINE_NAME           | ROUTINE_TYPE |
+----------+------------------------+--------------+
| Music    | spAlbumsByGenre        | PROCEDURE    |
| Music    | spAlbumsFromArtistId   | PROCEDURE    |
| Music    | spAlbumsFromArtistName | PROCEDURE    |
| Music    | spArtistFromId         | PROCEDURE    |
| PetHotel | spGetAllPets           | PROCEDURE    |
| PetHotel | spGetPetById           | PROCEDURE    |
+----------+------------------------+--------------+

Můžeme to také zúžit na konkrétní databázi:

SELECT 
    routine_schema as "Database",
    routine_name,
    routine_type
FROM 
    information_schema.routines
WHERE 
    routine_schema = 'music'
ORDER BY 
    routine_name ASC;

Výsledek:

+----------+------------------------+--------------+
| Database | ROUTINE_NAME           | ROUTINE_TYPE |
+----------+------------------------+--------------+
| Music    | spAlbumsByGenre        | PROCEDURE    |
| Music    | spAlbumsFromArtistId   | PROCEDURE    |
| Music    | spAlbumsFromArtistName | PROCEDURE    |
| Music    | spArtistFromId         | PROCEDURE    |
+----------+------------------------+--------------+

  1. Co je formátovací řetězec na serveru SQL?

  2. Import .csv se sloupcem časového razítka (dd.mm.yyyy hh.mm.ss) pomocí psql \copy

  3. postgres - kde v (seznam) - sloupec neexistuje

  4. Nalezení rodiče na nejvyšší úrovni v SQL