仅在 MySQL 中显示特定数据库的函数和过程
Show Functions and Procedures for a specific database only in MySQL
每当我执行 SHOW PROCEDURE STATUS
或 SHOW 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 找到更多信息。
每当我执行 SHOW PROCEDURE STATUS
或 SHOW 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 找到更多信息。