仅在 MySQL 中显示特定数据库的函数和过程

Show Functions and Procedures for a specific database only in MySQL

每当我执行 SHOW PROCEDURE STATUSSHOW FUNCTION STATUS 时,引擎都会向我显示我所有数据库中的过程和函数,而不是我当前连接的数据库中的过程和函数。

有没有一种方法可以列出 and/or 仅从一个特定数据库检索有关过程和函数的信息?例如,如果我在数据库 "People" 中,我希望查询只显示该数据库中存在的函数和过程。

如果您的用户有权访问 mysql 架构,即 engine/system.. 您可以试试这个:

-- display function/procedure details
SELECT db, name, type, 
    security_type, definer, 
    created, modified
FROM mysql.proc
-- filter out system function/procedure
WHERE db != 'sys'
    AND db = 'your_chosen_database'
ORDER BY type, db;

您可以以更具体的方式使用它们

SHOW PROCEDURE STATUS WHERE Db = 'databasename';
SHOW FUNCTION STATUS WHERE Db = 'databasename';
SELECT routine_name,ROUTINE_SCHEMA 
FROM INFORMATION_SCHEMA.Routines 
WHERE ROUTINE_SCHEMA LIKE 'mydb';

您可以从 here 找到更多信息。