我正在尝试使用.Net从数据库中获取与存储过程(或函数)相关的一些数据。 我需要做的第一件事就是从数据库中获取存储过程并将其转换为字符串格式。 我需要的信息是:返回的列集,SP中使用的表,从SP调用的存储过程。在我能想到的那一刻,这样做的唯一方法是解析文本并寻找关键字匹配。有没有更好的方法呢?
有什么想法吗?
答案 0 :(得分:1)
假设您知道返回的表可能依赖于函数的输入,因此对于给定的存储过程,并不总是有单个输出,但是......
要获取存储过程列表,您可以调用sp_help
。然后,您可以使用sp_helptext
获取存储过程的来源(@objname
是存储过程的名称)。
要查找引用的表,列等,您需要解析SQL脚本 - 您可以自己执行此操作,或者有更多已建立的项目(例如ANTLR)可以简化您的事务
答案 1 :(得分:0)
将SPROC作为文本后,可以使用SQL Parser。
.NET有几个 - 请参阅this SO问题的答案(在.NET中解析SQL)。
答案 2 :(得分:0)
如果您使用的是SQL Server,还可以尝试使用sp_depends存储过程
EXEC sp_depends @objname = N'sproc_name' ;