如何在mysql命令行中看到存储过程或存储函数的列表,如show tables;或显示数据库;命令。
当前回答
如果要列出当前所选数据库的存储过程,请
SHOW PROCEDURE STATUS WHERE Db = DATABASE();
它将根据当前选择的数据库列出例程
更新 列出数据库中的函数
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="FUNCTION";
要在数据库中列出例程/存储过程,
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="PROCEDURE";
要列出数据库中的表,
select * from information_schema.TABLES WHERE TABLE_TYPE="BASE TABLE" AND TABLE_SCHEMA="YOUR DATABASE NAME";
要列出数据库中的视图,
方法1:
select * from information_schema.TABLES WHERE TABLE_TYPE="VIEW" AND TABLE_SCHEMA="YOUR DATABASE NAME";
方法2:
select * from information_schema.VIEWS WHERE TABLE_SCHEMA="YOUR DATABASE NAME";
其他回答
用这个:
SHOW PROCEDURE STATUS;
选择:
SELECT * FROM INFORMATION_SCHEMA.ROUTINES
从MySQL 8.0开始,MySQL。Procs表已被删除。从这里的答案中运行任何使用这个表的命令都会产生一个错误,它说(相当有逻辑):
Table 'mysql.proc' doesn't exist
相反,要检索只有过程/函数名的列表,请使用:
SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='<your_db_name>';
在我的例子中,我编辑了它,只显示过程而不显示函数:
SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='<your_db_name>' AND routine_type='PROCEDURE';
我最喜欢呈现的程序列表的当前数据库:名称,参数列表,注释
SELECT specific_name AS name, param_list AS params, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'PROCEDURE';
为函数添加返回值:
SELECT specific_name AS name, param_list AS params, `returns`, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'FUNCTION';
只展示你的:
SELECT
db, type, specific_name, param_list, returns
FROM
mysql.proc
WHERE
definer LIKE
CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'));