В MariaDB можем да използваме SHOW PROCEDURE STATUS команда за връщане на списък със съхранени процедури.
Можем също да направим заявка за information_schema.routines таблица, за да направите същото.
SHOW PROCEDURE STATUS Команда
Най-лесният начин да изброите всички съхранени процедури е да използвате SHOW PROCEDURE STATUS команда.
Просто изпълнете следното, за да изброите всички съхранени процедури:
SHOW PROCEDURE STATUS; Синтаксисът е така:
SHOW PROCEDURE STATUS
[LIKE 'pattern' | WHERE expr]
Така че можете да използвате LIKE клауза или WHERE клауза за стесняване на резултатите.
Пример:
SHOW PROCEDURE STATUS LIKE 'film%'; Резултат:
+--------+-------------------+-----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +--------+-------------------+-----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | sakila | film_in_stock | PROCEDURE | example@sqldat.com | 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 | example@sqldat.com | 2021-11-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER | | utf8mb4 | utf8mb4_general_ci | utf8mb4_general_ci | +--------+-------------------+-----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
information_schema.routines Таблица
Друг начин да получите списък със съхранени процедури е да потърсите information_schema.routines таблица.
Пример:
SELECT
routine_schema as "Database",
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'PROCEDURE'
ORDER BY
routine_schema ASC,
routine_name ASC; Резултат:
+----------+--------------------+ | Database | routine_name | +----------+--------------------+ | mysql | AddGeometryColumn | | mysql | DropGeometryColumn | | pethouse | spGetAllPets | | pethouse | spGetPetById | | sakila | film_in_stock | | sakila | film_not_in_stock | | sakila | rewards_report | +----------+--------------------+
Тази таблица също така съхранява информация за съхранените функции. В горния пример ги изключих, като използвах WHERE клауза за връщане само на съхранени процедури (т.е. обекти с routine_type на PROCEDURE ).
За да включим съхранени функции, можем да премахнем WHERE клауза:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
ORDER BY
routine_schema ASC,
routine_name ASC; Резултат:
+----------+----------------------------+--------------+ | 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 | +----------+----------------------------+--------------+
В този случай добавих и routine_type колона, за да можем да правим разлика между процедурите и функциите.
Можем също да изключим определени бази данни от резултата, ако искаме:
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; Резултат:
+----------+----------------------------+--------------+ | 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 | +----------+----------------------------+--------------+
Или можем да го ограничим до дадена база данни:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema = 'pethouse'
ORDER BY
routine_name ASC; Резултат:
+----------+--------------+--------------+ | Database | routine_name | routine_type | +----------+--------------+--------------+ | pethouse | spGetAllPets | PROCEDURE | | pethouse | spGetPetById | PROCEDURE | +----------+--------------+--------------+