如何从存储过程生成文档?

Noe*_*eto 5 mysql stored-procedures

我正在使用一组新的表和越来越多的存储过程列表。

有没有办法根据表和存储过程的注释生成文档,例如autodoc或 doxygen?

注意:我使用的是mysql。

Vér*_*ace 2

我一生都无法理解为什么这个问题会因偏离主题而被标记。我认为这对于正在工作的 DBA 来说很有趣并且非常相关。

不幸的是,据我所知,不可能自动执行此操作。您可以运行两个命令

SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = 'yourdb' AND ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME = "procedurename";
Run Code Online (Sandbox Code Playgroud)

SHOW PROCEDURE STATUS; -- will give you all procedures available.

SHOW CREATE PROCEDURE procedure_name; -- will give you details about a given procedure.
Run Code Online (Sandbox Code Playgroud)

此处提供了对该主题的很好的讨论,其中显示了与各种命令相关的问题。

稍微扩展示例 alluser() 过程的示例,如上面的链接所示。我用 # 和 -- 添加了注释。

DELIMITER //

CREATE PROCEDURE alluser()

# a proc to show all users
BEGIN
   SELECT *  -- selecting from the users' table
   FROM users;
END //
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

我发现使用 SHOW PROCEDURE STATUS 或 SHOW CREATE PROCEDURE alluser; 都不会返回注释;NOR 上面的 SQL 语句返回注释。

[编辑-我进一步发现评论不会被返回SELECT * FROM Information_Schema.Routines.

我搜索了系统并在 INFORMATION_SCHEMA.ROUTINES 中找到了字段 ROUTINE_COMMENT - 但它也没有返回注释。这个字段的用途,我不太清楚 - 也许它还没有实现?

我谨建议您最好的选择是边做边记录 - 将“程序的完整文档”作为您的测试和 UAT 框架的一部分。