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

Posted

技术标签:

【中文标题】仅在 MySQL 中显示特定数据库的函数和过程【英文标题】:Show Functions and Procedures for a specific database only in MySQL 【发布时间】:2018-08-31 09:39:06 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

SHOW PROCEDURE STATUS WHERE Db = 'databasename';
SHOW FUNCTION STATUS WHERE Db = 'databasename';

【讨论】:

天哪,我现在感觉好蠢……我简直不敢相信我错过了“Db”列。在问这里之前应该喝过我的咖啡。困的时候我应该远离电脑。【参考方案2】:
SELECT routine_name,ROUTINE_SCHEMA 
FROM INFORMATION_SCHEMA.Routines 
WHERE ROUTINE_SCHEMA LIKE 'mydb';

您可以通过here找到更多信息。

【讨论】:

【参考方案3】:

如果您的用户有权访问 mysql 架构,即引擎/系统..您可以试试这个:

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

【讨论】:

以上是关于仅在 MySQL 中显示特定数据库的函数和过程的主要内容,如果未能解决你的问题,请参考以下文章

仅在某些特定单元格中显示 QComboBox(通过委托)?

如何仅在 recyclerview 中显示具有特定值的数据

MySQL 唯一键仅在另一个键包含特定值的情况下

MySQL存储过程和函数

MySQL存储过程

MySQL存储过程