sql - 如何从存储过程/函数中获取代码注释并填充到表中?
问题描述
如何从存储过程/函数中获取代码注释并填充到表中?
/*
Author : Test
Comment : Test
*/
我正在处理用户定义的函数,方法是将存储过程或函数作为输入参数传递以读取代码历史注释并将其存储在表中。在表格中包含详细信息以维护输入的版本说明。
解决方案
检查这个,有不同的方法来获得定义,我更喜欢sp_helptext
因为它已经分成几行
DECLARE @Objects TABLE(name varchar(100))
DECLARE @Lines TABLE(id int identity, line varchar(maX))
INSERT @Objects
SELECT name FROM sys.objects WHERE Type in ('FN', 'IF', 'P', 'TR', 'TF')
DECLARE @ObjectName VARCHAR(100)
WHILE EXISTS (SELECT 1 FROM @Objects)
BEGIN
SELECT TOP 1 @ObjectName = name FROM @Objects
DELETE @Lines
INSERT @Lines (line)
exec sp_helptext @ObjectName
DECLARE @Linestart INT, @LineEnd INT
WHILE EXISTS(SELECT 1 FROM @Lines WHERE charindex('/*', line) > 0)
BEGIN
SELECT TOP 1 @Linestart = id
FROM @Lines WHERE charindex('/*', line) > 0
ORDER BY id
SELECT TOP 1 @LineEnd = id
FROM @Lines WHERE charindex('*/', line) > 0
ORDER BY id
DECLARE @comment VARCHAR(MAX) = ''
SELECT @Coment = @coment + char(13) + char(10) + line
FROM @Lines
WHERE id between @LineStart and @lineEnd
INSERT INTO yourtable (@objectName, @Comment)
DELETE @Lines WHERE id between @LineStart and @lineEnd
END
DELETE @Objects WHERE name = @ObjectName
END
推荐阅读
- selenium - 使用 Protractor 并行自动化测试的正确配置设置是什么?
- javascript - 向数组 React 添加一个对象;“TypeError:无法读取未定义的属性‘push’”
- kubernetes - 如何在 OpenShift 上为我的应用程序选择名称
- java - 如何在 Java 光线追踪器中实现多线程
- javascript - 如何从此键值对中获取给定的突出显示文本信息
- python - 使用用户输入进行 Python 打印
- r - Yelp 餐厅信息网页抓取(运行循环以获取多个餐厅信息时遇到错误)
- c# - 如何在不指定静态高度或宽度的情况下使 ScrollViewer 工作?
- android - 通过适配器膨胀 json 数据
- python - AWS lambda zappa 未使用最新的 boto3 版本