MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak wyświetlić wszystkie procedury składowane w MariaDB?

W MariaDB możemy użyć SHOW PROCEDURE STATUS polecenie, aby zwrócić listę procedur składowanych.

Możemy również zapytać o information_schema.routines tabeli, aby zrobić to samo.

SHOW PROCEDURE STATUS Polecenie

Najłatwiejszym sposobem wyświetlenia listy wszystkich procedur składowanych jest użycie SHOW PROCEDURE STATUS polecenie.

Po prostu uruchom następujące polecenie, aby wyświetlić wszystkie procedury składowane:

SHOW PROCEDURE STATUS;

Składnia wygląda tak:

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

Możesz więc użyć LIKE klauzula lub WHERE klauzula, aby zawęzić wyniki.

Przykład:

SHOW PROCEDURE STATUS LIKE 'film%';

Wynik:

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

information_schema.routines Tabela

Innym sposobem uzyskania listy procedur składowanych jest zapytanie o information_schema.routines tabela.

Przykład:

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

Wynik:

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

Ta tabela przechowuje również informacje o przechowywanych funkcjach. W powyższym przykładzie wykluczyłem je za pomocą WHERE klauzula zwracająca tylko procedury składowane (tj. obiekty z routine_type z PROCEDURE ).

Aby uwzględnić zapisane funkcje, możemy usunąć WHERE klauzula:

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

Wynik:

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

W tym przypadku dodałem również routine_type kolumna, abyśmy mogli rozróżnić procedury i funkcje.

Możemy również wykluczyć niektóre bazy danych z wyniku, jeśli chcemy:

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;

Wynik:

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

Lub możemy zawęzić go do danej bazy danych:

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

Wynik:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB CONNECTION_ID() Objaśnienie

  2. Jak FIELD() działa w MariaDB

  3. Zautomatyzowane testowanie procesu aktualizacji dla MySQL/MariaDB/Percona Server

  4. Jak działa dźwięk w MariaDB

  5. Jak zainstalować MariaDB 10 na RHEL 8?