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

So listen Sie alle gespeicherten Prozeduren in MariaDB auf

In MariaDB können wir den SHOW PROCEDURE STATUS verwenden Befehl, um eine Liste gespeicherter Prozeduren zurückzugeben.

Wir können auch die information_schema.routines abfragen Tabelle, um dasselbe zu tun.

Der SHOW PROCEDURE STATUS Befehl

Der einfachste Weg, alle gespeicherten Prozeduren aufzulisten, ist die Verwendung von SHOW PROCEDURE STATUS Befehl.

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

SHOW PROCEDURE STATUS;

Die Syntax sieht so aus:

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

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

Beispiel:

SHOW PROCEDURE STATUS LIKE 'film%';

Ergebnis:

+--------+-------------------+-----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db     | Name              | Type      | Definer          | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+--------+-------------------+-----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| sakila | film_in_stock     | PROCEDURE | [email protected] | 2021-11-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER       |         | utf8mb4              | utf8mb4_general_ci   | utf8mb4_general_ci |
| sakila | film_not_in_stock | PROCEDURE | [email protected] | 2021-11-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER       |         | utf8mb4              | utf8mb4_general_ci   | utf8mb4_general_ci |
+--------+-------------------+-----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+

Die information_schema.routines Tabelle

Eine andere Möglichkeit, eine Liste gespeicherter Prozeduren zu erhalten, besteht darin, information_schema.routines abzufragen Tabelle.

Beispiel:

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

Ergebnis:

+----------+--------------------+
| Database | routine_name       |
+----------+--------------------+
| mysql    | AddGeometryColumn  |
| mysql    | DropGeometryColumn |
| pethouse | spGetAllPets       |
| pethouse | spGetPetById       |
| sakila   | film_in_stock      |
| sakila   | film_not_in_stock  |
| sakila   | rewards_report     |
+----------+--------------------+

Diese Tabelle speichert auch Informationen über gespeicherte Funktionen. Im obigen Beispiel habe ich diese ausgeschlossen, indem ich ein WHERE verwendet habe -Klausel, um nur gespeicherte Prozeduren zurückzugeben (d. h. Objekte mit einem routine_type von PROCEDURE ).

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

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

Ergebnis:

+----------+----------------------------+--------------+
| Database | routine_name               | routine_type |
+----------+----------------------------+--------------+
| mysql    | AddGeometryColumn          | PROCEDURE    |
| mysql    | DropGeometryColumn         | PROCEDURE    |
| pethouse | spGetAllPets               | PROCEDURE    |
| pethouse | spGetPetById               | PROCEDURE    |
| 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    |
+----------+----------------------------+--------------+

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 auch bestimmte Datenbanken aus dem Ergebnis ausschließen, wenn wir wollen:

SELECT 
    routine_schema as "Database",
    routine_name,
    routine_type
FROM 
    information_schema.routines
WHERE 
    routine_schema NOT IN ('sys', 'information_schema', 'mysql', 'performance_schema')
ORDER BY 
    routine_schema ASC, 
    routine_name ASC;

Ergebnis:

+----------+----------------------------+--------------+
| Database | routine_name               | routine_type |
+----------+----------------------------+--------------+
| pethouse | spGetAllPets               | PROCEDURE    |
| pethouse | spGetPetById               | PROCEDURE    |
| 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    |
+----------+----------------------------+--------------+

Oder wir könnten es auf eine bestimmte Datenbank eingrenzen:

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

Ergebnis:

+----------+--------------+--------------+
| Database | routine_name | routine_type |
+----------+--------------+--------------+
| pethouse | spGetAllPets | PROCEDURE    |
| pethouse | spGetPetById | PROCEDURE    |
+----------+--------------+--------------+