MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

2 Möglichkeiten, alle Funktionen in MariaDB aufzulisten

Nachfolgend finden Sie zwei Optionen zum Zurückgeben einer Liste von Funktionen in MariaDB.

Der SHOW FUNCTION STATUS Befehl

Der schnellste Weg, alle Funktionen aufzulisten, ist die Verwendung von SHOW FUNCTION STATUS Befehl.

Führen Sie einfach Folgendes aus, um alle Funktionen aufzulisten:

SHOW FUNCTION STATUS;

Die Syntax sieht so aus:

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

Sie können also ein LIKE verwenden oder WHERE -Klausel, um die Ergebnisse einzugrenzen.

Beispiel:

SHOW FUNCTION STATUS LIKE '%customer%';

Beispielergebnis:

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

Wir können das WHERE verwenden -Klausel, um die Ergebnisse nach den Spalten zu filtern. Beispielsweise können wir die Ergebnisse nach einer bestimmten Datenbank filtern:

SHOW FUNCTION STATUS WHERE db = 'music';

Beispielergebnis:

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

Der SHOW FUNCTION STATUS Der Befehl funktioniert sehr ähnlich wie der SHOW PROCEDURE STATUS Befehl, der eine Liste gespeicherter Prozeduren zurückgibt.

Die information_schema.routines Tabelle

Eine andere Möglichkeit, eine Liste von Funktionen in MariaDB zu erhalten, besteht darin, die information_schema.routines abzufragen Tabelle.

Beispiel:

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

Beispielergebnis:

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

In dieser Tabelle werden auch Informationen zu gespeicherten Prozeduren gespeichert. Im obigen Beispiel habe ich diese ausgeschlossen, indem ich ein WHERE verwendet habe -Klausel, um nur Funktionen zurückzugeben (d. h. Objekte mit einem routine_type von FUNCTION ).

Um gespeicherte Prozeduren einzuschließen, können wir WHERE entfernen Klausel:

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

In diesem Fall habe ich auch den routine_type hinzugefügt Spalte, damit wir zwischen den Prozeduren und Funktionen unterscheiden können.

Wir können es auch auf eine bestimmte Datenbank eingrenzen:

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

Ergebnis:

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