用于汇总存储过程的SQL Server脚本

时间:2012-03-12 11:46:44

标签: sql-server

对于给定的存储过程,我需要以下摘要 -

  • 使用列名
  • 选择的表
  • 使用列名称修改(插入,更新或删除)表(如果更新)
  • 使用与上述两点相同的摘要调用任何子存储过程。
  • 传递参​​数

有没有人知道这样的T-SQL脚本来汇总存储过程?

2 个答案:

答案 0 :(得分:3)

您可以使用sp_help获取有关对象的参数和信息的信息。

EXEC sp_help yourProcedure;

然后,要获取表格和列的内容,您可以使用sp_depends

EXEC sp_depends yourProcedure;

Here是列出sql Object Dependencies

的有用链接

或者你也可以使用。但它只适用于2008年及以上。

SELECT * FROM sys.dm_sql_referenced_entities ('dbo.yourProcedure', 'OBJECT');
SELECT * FROM sys.dm_sql_referencing_entities('dbo.yourProcedure', 'OBJECT');

因为sp_depends已弃用。

如果存储过程使用动态sql。那么你唯一需要使用的是:

sp_helptext yourProcedure 

这将返回程序的内容。

如果您在存储过程中有动态sql。你可以这样做:

DECLARE @tbl TABLE(Text VARCHAR(MAX))
INSERT INTO @tbl
EXEC sp_helptext yourProcedure

SELECT 
    sysTables.name 
FROM 
    dbo.sysobjects AS sysTables
WHERE EXISTS
    (
        SELECT
            NULL
        FROM
            @tbl AS tbl
        WHERE
            tbl.Text LIKE '%'+sysTables.name+'%'
    )

这将返回商店过程中使用的对象。

答案 1 :(得分:0)

这将为您提供存储过程的实际文本,您可以将其复制并粘贴到另一个查询窗口并进行分析。

sp_helptext yourProcedure