sql >> Database teknologi >  >> RDS >> Mysql

2 måder at liste alle funktioner i MySQL

Nedenfor er to muligheder, vi kan bruge til at returnere en liste over funktioner i MySQL.

SHOW FUNCTION STATUS Kommando

Den hurtigste måde at få vist alle funktioner på er at bruge SHOW FUNCTION STATUS kommando.

Kør følgende for at få en liste over alle funktioner:

SHOW FUNCTION STATUS;

Syntaksen ser sådan ud:

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

Så du kan bruge en LIKE eller WHERE klausul for at indsnævre resultaterne.

Eksempel:

SHOW FUNCTION STATUS LIKE '%test%';

Eksempelresultat:

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

Vi kan bruge WHERE klausul for at filtrere resultaterne efter kolonnerne. For eksempel kan vi filtrere resultaterne til en given database:

SHOW FUNCTION STATUS WHERE db = 'sakila';

Eksempelresultat:

+--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| 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 kommandoen fungerer meget som SHOW PROCEDURE STATUS kommando, som returnerer en liste over lagrede procedurer.

information_schema.routines Tabel

En anden måde at få en liste over funktioner i MySQL på er at forespørge information_schema.routines tabel.

Eksempel:

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

Denne tabel gemmer også oplysninger om lagrede procedurer. I ovenstående eksempel ekskluderede jeg dem ved at bruge en WHERE klausul for kun at returnere funktioner (dvs. objekter med en routine_type af FUNCTION ).

For at inkludere lagrede procedurer kan vi fjerne WHERE klausul:

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

I dette tilfælde tilføjede jeg også routine_type kolonne, så vi kan skelne mellem procedurerne og funktionerne.

Vi kan også indsnævre det til en bestemt database:

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

Eksempelresultat:

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


  1. Hvordan slutter man sig til det samme bord, to gange, i mysql?

  2. Sådan fungerer DAYNAME() i MariaDB

  3. 4 funktioner, der returnerer sekunddelen fra en tidsværdi i MariaDB

  4. Mistet forbindelsen til MySQL-serveren ved 'læsning af initial kommunikationspakke', systemfejl:0