2

我们能否通过 dml 或 ddl 操作获取一个存储过程中使用的表列表,例如:表名 -select 、insert、update、delete

4

2 回答 2

0
    ;WITH stored_procedures AS (
      SELECT 
      o.name AS proc_name, oo.name AS table_name,
      ROW_NUMBER() OVER(partition by o.name,oo.name ORDER BY o.name,oo.name) AS row
      FROM sysdepends d 
      INNER JOIN sysobjects o ON o.id=d.id
      INNER JOIN sysobjects oo ON oo.id=d.depid
      WHERE o.xtype = 'P')
      SELECT proc_name, table_name FROM stored_procedures
      WHERE row = 1
      ORDER BY proc_name,table_name
于 2014-01-02T20:35:23.210 回答
0

或者您可以使用以下代码:

    SELECT DISTINCT 
    [object_name] = SCHEMA_NAME(o.[schema_id]) + '.' + o.name
   , o.type_desc
    FROM sys.dm_sql_referenced_entities ('dbo.sp_name', 'OBJECT') d
    JOIN sys.objects o ON d.referenced_id = o.[object_id]
    WHERE o.[type] IN ('U', 'V')
于 2014-01-02T20:42:08.463 回答