sql >> Database >  >> RDS >> Mysql

2 manieren om alle functies in MySQL weer te geven

Hieronder staan ​​twee opties die we kunnen gebruiken om een ​​lijst met functies in MySQL te retourneren.

De SHOW FUNCTION STATUS Commando

De snelste manier om alle functies op een rijtje te zetten, is door de SHOW FUNCTION STATUS . te gebruiken commando.

Voer het volgende uit om alle functies op een rijtje te zetten:

SHOW FUNCTION STATUS;

De syntaxis gaat als volgt:

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

U kunt dus een LIKE . gebruiken of WHERE clausule om de resultaten te verfijnen.

Voorbeeld:

SHOW FUNCTION STATUS LIKE '%test%';

Voorbeeld resultaat:

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

We kunnen de WHERE . gebruiken clausule om de resultaten op de kolommen te filteren. We kunnen bijvoorbeeld de resultaten naar een bepaalde database filteren:

SHOW FUNCTION STATUS WHERE db = 'sakila';

Voorbeeld resultaat:

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

De SHOW FUNCTION STATUS commando werkt net als de SHOW PROCEDURE STATUS commando, dat een lijst met opgeslagen procedures retourneert.

De information_schema.routines Tabel

Een andere manier om een ​​lijst met functies in MySQL te krijgen, is door de information_schema.routines op te vragen. tafel.

Voorbeeld:

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

Deze tabel bevat ook informatie over opgeslagen procedures. In het bovenstaande voorbeeld heb ik die uitgesloten door een WHERE . te gebruiken clausule om alleen functies te retourneren (d.w.z. objecten met een routine_type van FUNCTION ).

Om opgeslagen procedures op te nemen, kunnen we de WHERE . verwijderen clausule:

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

In dit geval heb ik ook de routine_type . toegevoegd kolom zodat we onderscheid kunnen maken tussen de procedures en functies.

We kunnen het ook beperken tot een specifieke database:

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

Voorbeeld resultaat:

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


  1. Hoe de Time()-functie werkt in SQLite

  2. Samenvoegen..output gebruiken om toewijzing te krijgen tussen source.id en target.id

  3. Hoe ALLE logische operatoren in SQL Server te gebruiken - SQL Server / TSQL-zelfstudie, deel 126

  4. Toegestane geheugengrootte van 8589934592 bytes uitgeput