如何在mysql命令行中看到存储过程或存储函数的列表,如show tables;或显示数据库;命令。
当前回答
我最喜欢呈现的程序列表的当前数据库:名称,参数列表,注释
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 specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='database_name'
列出所有数据库的用户过程和功能:
SELECT
`ROUTINE_SCHEMA` AS `database`
,`ROUTINE_TYPE` AS `type`
,`SPECIFIC_NAME` AS `name`
,`DTD_IDENTIFIER` AS `data_type`
FROM
`INFORMATION_SCHEMA`.`ROUTINES`
WHERE
`definer` LIKE
CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'))
ORDER BY
`database`
,`type`
,`name`
;
列出正在使用的数据库的用户程序和功能:
SELECT
`ROUTINE_SCHEMA` AS `database`
,`ROUTINE_TYPE` AS `type`
,`SPECIFIC_NAME` AS `name`
,`DTD_IDENTIFIER` AS `data_type`
FROM
`INFORMATION_SCHEMA`.`ROUTINES`
WHERE
`definer` LIKE
CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'))
AND
`ROUTINE_SCHEMA` = DATABASE()
ORDER BY
`type`
,`name`
;
如上所述,
show procedure status;
确实会显示过程列表,但会显示服务器范围内的所有过程。
如果你想只看到一个数据库中的那些,试试这个:
SHOW PROCEDURE STATUS WHERE Db = 'databasename';
从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';
更具体的说法:
SHOW PROCEDURE STATUS
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
推荐文章
- Linux相当于Mac OS X的“open”命令
- 如何在Mac上的命令行安装JQ ?
- MySQL更新内部连接表查询
- 在命令行中使用Firefox截取完整页面的截图
- 在pip install -U中“-U”选项代表什么
- 根据查询结果设置用户变量
- 如何将参数转发到bash脚本中的其他命令?
- 不能删除外键约束中需要的索引
- MySQL现在()+1天
- MySQL索引的最佳实践是什么?
- 如何在Mac OS安装时停止MySQL ?
- 外键约束:何时使用ON UPDATE和ON DELETE
- 在MySQL中使用INDEX和KEY有什么区别?
- 连接查询vs多个查询
- MySQL:在同一个MySQL实例上克隆MySQL数据库