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

2 způsoby, jak vypsat všechny funkce v MySQL

Níže jsou dvě možnosti, které můžeme použít k vrácení seznamu funkcí v MySQL.

SHOW FUNCTION STATUS Příkaz

Nejrychlejší způsob, jak vypsat všechny funkce, je použít SHOW FUNCTION STATUS příkaz.

Chcete-li zobrazit všechny funkce, spusťte následující:

SHOW FUNCTION STATUS;

Syntaxe vypadá takto:

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

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

Příklad:

SHOW FUNCTION STATUS LIKE '%test%';

Příklad výsledku:

+----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db       | Name          | Type     | Definer        | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| PetHotel | test_function | FUNCTION | [email protected] | 2021-11-29 08:09:26 | 2021-11-29 08:09:26 | DEFINER       |         | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci |
+----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+

Můžeme použít WHERE klauzule pro filtrování výsledků podle sloupců. Můžeme například filtrovat výsledky do dané databáze:

SHOW FUNCTION STATUS WHERE db = 'sakila';

Příklad výsledku:

+--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db     | Name                       | Type     | Definer        | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| sakila | get_customer_balance       | FUNCTION | [email protected] | 2021-11-29 08:04:31 | 2021-11-29 08:04:31 | DEFINER       |         | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci |
| sakila | inventory_held_by_customer | FUNCTION | [email protected] | 2021-11-29 08:04:31 | 2021-11-29 08:04:31 | DEFINER       |         | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci |
| sakila | inventory_in_stock         | FUNCTION | [email protected] | 2021-11-29 08:04:31 | 2021-11-29 08:04:31 | DEFINER       |         | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci |
+--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+

SHOW FUNCTION STATUS příkaz funguje velmi podobně jako SHOW PROCEDURE STATUS příkaz, který vrátí seznam uložených procedur.

information_schema.routines Tabulka

Dalším způsobem, jak získat seznam funkcí 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 = 'FUNCTION'
ORDER BY 
    routine_schema ASC, 
    routine_name ASC;

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

Chcete-li zahrnout uložené procedury, 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.

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 = 'pethotel'
ORDER BY 
    routine_name ASC;

Ukázkový výsledek:

+----------+---------------+--------------+
| Database | ROUTINE_NAME  | ROUTINE_TYPE |
+----------+---------------+--------------+
| PetHotel | spGetAllPets  | PROCEDURE    |
| PetHotel | spGetPetById  | PROCEDURE    |
| PetHotel | test_function | FUNCTION     |
+----------+---------------+--------------+


  1. Práce s databázovými stroji MySQL

  2. Získejte tabulku a sloupec vlastnící sekvenci

  3. Operand by měl obsahovat 1 sloupec – MySQL NENÍ IN

  4. 8 nejoblíbenějších databází