sql >> Database >  >> RDS >> MariaDB

2 manieren om alle functies in MariaDB weer te geven

Hieronder staan ​​twee opties voor het retourneren van een lijst met functies in MariaDB.

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 gewoon 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 '%customer%';

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-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER       |         | utf8mb4              | utf8mb4_general_ci   | utf8mb4_general_ci |
| sakila | inventory_held_by_customer | FUNCTION | [email protected] | 2021-11-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER       |         | utf8mb4              | utf8mb4_general_ci   | utf8mb4_general_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 = 'music';

Voorbeeld resultaat:

+-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db    | Name | Type     | Definer          | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| music | test | FUNCTION | [email protected] | 2021-11-27 09:46:25 | 2021-11-27 09:46:25 | DEFINER       |         | utf8                 | utf8_general_ci      | utf8mb4_general_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 MariaDB 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;

Voorbeeld resultaat:

+----------+----------------------------+
| Database | routine_name               |
+----------+----------------------------+
| music    | test                       |
| sakila   | get_customer_balance       |
| sakila   | inventory_held_by_customer |
| sakila   | inventory_in_stock         |
+----------+----------------------------+

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

Resultaat:

+----------+----------------------------+--------------+
| Database | routine_name               | routine_type |
+----------+----------------------------+--------------+
| sakila   | film_in_stock              | PROCEDURE    |
| sakila   | film_not_in_stock          | PROCEDURE    |
| sakila   | get_customer_balance       | FUNCTION     |
| sakila   | inventory_held_by_customer | FUNCTION     |
| sakila   | inventory_in_stock         | FUNCTION     |
| sakila   | rewards_report             | PROCEDURE    |
+----------+----------------------------+--------------+

  1. Hoe de veldwaarde te bepalen die niet kan worden geconverteerd naar (decimaal, zwevend, int) in SQL Server

  2. SQL Server-fout bij updateopdracht - Er is een ernstige fout opgetreden bij de huidige opdracht

  3. Tel records voor elke maand in een jaar

  4. COUNT() Functie in MariaDB