2010-04-07 132 views
2

我想从数据库使用.Net返回一些与存储过程(或函数)相关的数据。 我需要做的第一件事就是从数据库中获取存储过程并将其转换为字符串格式。 我需要的信息是:返回的一组列,在SP中使用的表格,从SP调用的存储过程。在我能想到的时候做这件事的唯一方法就是解析文本并寻找关键字匹配。有没有更好的方法来做到这一点?从.Net获取存储过程信息

任何想法?

回答

1

假设你知道,返回的表可能依赖于函数的输入,所以不会永远是一个给定存储过程的单个输出,但是......

要获得存储过程列表,您可以拨打sp_help。然后,您可以使用sp_helptext(其中@objname是存储过程的名称)获取存储过程的源。

要找到引用的表,列等,你会想要解析SQL脚本 - 你可以自己做这个,或者有更多已建立的项目,例如ANTLR,这些可以简化你的工作。

+0

感谢@Rowland,sp_heltext看起来非常有帮助。 – Ben 2010-04-07 12:52:33

0

将SPROC作为文本使用后,可以使用SQL解析器。

有几个.NET - 请参阅this SO问题的解答(在.NET中解析SQL)。

0

如果您正在使用SQL Server,你也可以尝试sp_depends将存储过程

EXEC sp_depends @objname = N'sproc_name' ;