我需要在MySQL 8中获取用户定义的PROCEDURE / FUNCTION完整定义。
MySQL 5.6包含mysql.proc表,我们可以获得函数完整定义,但 MySQL 8 不包含proc表。
但是MySQL 5.6和8也有information_schema.ROUTINES表它只包含函数体,我找不到函数parameter
和return
类型。
我在 MySQL 5.6 中做了什么
SELECT
`name` AS _schema,
CONVERT(body USING utf8) AS _schemaDef,
CONVERT(param_list USING utf8) AS param_list,
CONVERT(`returns` USING utf8) AS `returns`
FROM mysql.proc
WHERE db = 'my_db_name'
知道如何做这个 MySQL 8 吗?
我的最终目标是使用 PHP 将所有函数和过程从一个数据库复制到另一个数据库
我找到了一个解决方案...
显示创建函数函数名
以上查询在MySQL 5.6和8中工作正常。但首先我必须从information_schema.ROUTINES表中获取FUNCTION名称列表并循环记录集,在循环内我必须运行上面的SHOW CREATE FUNCTION查询。
如何优化此流程?