sys*_*ult 465 mysql command-line stored-procedures
如何在mysql命令行show tables;
或show databases;
命令中查看存储过程或存储函数的列表.
fre*_*rik 729
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;
Run Code Online (Sandbox Code Playgroud)
小智 209
show procedure status
Run Code Online (Sandbox Code Playgroud)
将显示存储过程.
show create procedure MY_PROC
Run Code Online (Sandbox Code Playgroud)
将向您展示程序的定义.和
help show
Run Code Online (Sandbox Code Playgroud)
将显示该show
命令的所有可用选项.
Pra*_*r_V 85
以名义方式查看过程
select name from mysql.proc
Run Code Online (Sandbox Code Playgroud)
下面用于列出所有过程的代码,下面的代码与show procedure status给出相同的结果
select * from mysql.proc
Run Code Online (Sandbox Code Playgroud)
sas*_*man 44
更具体的方式:
SHOW PROCEDURE STATUS
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
Run Code Online (Sandbox Code Playgroud)
Dra*_*rok 32
正如刚才提到的,
show procedure status;
Run Code Online (Sandbox Code Playgroud)
确实会显示一个程序列表,但在服务器范围内显示所有这些程序.
如果您只想查看单个数据库中的那些,请尝试以下方法:
SHOW PROCEDURE STATUS WHERE Db = 'databasename';
Run Code Online (Sandbox Code Playgroud)
mac*_*Jun 28
替代方案:
SELECT * FROM INFORMATION_SCHEMA.ROUTINES
Run Code Online (Sandbox Code Playgroud)
Joh*_*and 21
我的偏好是:
从这个帖子中的其他答案拼凑而成,我最终得到了
select
name, type
from
mysql.proc
where
db = database()
order by
type, name;
Run Code Online (Sandbox Code Playgroud)
...最终会得到如下结果:
mysql> select name, type from mysql.proc where db = database() order by type, name;
+------------------------------+-----------+
| name | type |
+------------------------------+-----------+
| get_oldest_to_scan | FUNCTION |
| get_language_prevalence | PROCEDURE |
| get_top_repos_by_user | PROCEDURE |
| get_user_language_prevalence | PROCEDURE |
+------------------------------+-----------+
4 rows in set (0.30 sec)
Run Code Online (Sandbox Code Playgroud)
小智 10
显示所有存储过程:
SHOW PROCEDURE STATUS;
Run Code Online (Sandbox Code Playgroud)
显示所有功能:
SHOW FUNCTION STATUS;
Run Code Online (Sandbox Code Playgroud)
显示指定过程的定义:
SHOW CREATE PROCEDURE [PROC_NAME];
Run Code Online (Sandbox Code Playgroud)
显示给定数据库的所有过程:
SHOW PROCEDURE STATUS WHERE Db = '[db_name]';
Run Code Online (Sandbox Code Playgroud)
Praveenkumar_V帖子的变体:
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'PROCEDURE';
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'FUNCTION';
Run Code Online (Sandbox Code Playgroud)
..这是因为我需要在一些家务后节省时间:
SELECT CONCAT(
"GRANT EXECUTE ON PROCEDURE `"
,`name`
,"` TO username@'%'; -- "
,`comment`
)
FROM mysql.proc
WHERE db = 'dbname'
AND `type` = 'PROCEDURE';
SELECT CONCAT(
"GRANT EXECUTE ON FUNCTION `"
,`name`
,"` TO username@'%'; -- "
,`comment`
)
FROM mysql.proc
WHERE db = 'dbname'
AND `type` = 'FUNCTION';
Run Code Online (Sandbox Code Playgroud)
只显示你的:
SELECT
db, type, specific_name, param_list, returns
FROM
mysql.proc
WHERE
definer LIKE
CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'));
Run Code Online (Sandbox Code Playgroud)
SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='database_name'
Run Code Online (Sandbox Code Playgroud)
如果要列出当前所选数据库的存储过程,
SHOW PROCEDURE STATUS WHERE Db = DATABASE();
Run Code Online (Sandbox Code Playgroud)
它将基于当前选定的数据库列出例程
更新 以列出数据库中的功能
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="FUNCTION";
Run Code Online (Sandbox Code Playgroud)
列出数据库中的例程/存储过程,
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="PROCEDURE";
Run Code Online (Sandbox Code Playgroud)
列出数据库中的表,
select * from information_schema.TABLES WHERE TABLE_TYPE="BASE TABLE" AND TABLE_SCHEMA="YOUR DATABASE NAME";
Run Code Online (Sandbox Code Playgroud)
列出数据库中的视图,
方法1:
select * from information_schema.TABLES WHERE TABLE_TYPE="VIEW" AND TABLE_SCHEMA="YOUR DATABASE NAME";
Run Code Online (Sandbox Code Playgroud)
方法2:
select * from information_schema.VIEWS WHERE TABLE_SCHEMA="YOUR DATABASE NAME";
Run Code Online (Sandbox Code Playgroud)
从 MySQL 8.0 开始,该mysql.procs
表已被删除。运行此处使用此表的答案中的任何命令都会产生一个错误,内容为(非常合乎逻辑):
Table 'mysql.proc' doesn't exist
Run Code Online (Sandbox Code Playgroud)
相反,要检索仅包含过程/函数名称的列表,请使用:
SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='<your_db_name>';
Run Code Online (Sandbox Code Playgroud)
就我而言,我对其进行了编辑以仅显示过程而不显示功能:
SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='<your_db_name>' AND routine_type='PROCEDURE';
Run Code Online (Sandbox Code Playgroud)