1

我需要在MySQL 8中获取用户定义的PROCEDURE / FUNCTION完整定义。

MySQL 5.6包含mysql.proc表,我们可以获得函数完整定义,但 MySQL 8 不包含proc表。

但是MySQL 5.68也有information_schema.ROUTINES表它只包含函数体,我找不到函数parameterreturn类型。

我在 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.68中工作正常。但首先我必须从information_schema.ROUTINES表中获取FUNCTION名称列表并循环记录集,在循环内我必须运行上面的SHOW CREATE FUNCTION查询。

如何优化此流程?

4

0 回答 0