如何使用Sp_depends仅获取表名?

时间:2015-06-02 06:17:55

标签: sql sql-server tsql

如何通过sp_depends单独在存储过程中使用表名。 例如

EXEC sp_depends Samplesp1

它提供samplesp1中使用的表名及其列名。但我只需要表名。

2 个答案:

答案 0 :(得分:2)

您可以将结果保存到临时表

CREATE TABLE #tmp
(
    name VARCHAR(250)
    ,[type] VARCHAR(250)
    ,updated CHAR(2)
    ,selected CHAR(3)
    ,[column] VARCHAR(250)
)

INSERT #tmp 
EXEC sp_depends @objname = N'yoursp'

SELECT name FROM #tmp

答案 1 :(得分:2)

最简单的方法是创建一个像this回答中提到的sqluser这样的临时表。

CREATE TABLE #temp
 (NAME VARCHAR(250)
, [type] VARCHAR(250)
, updated CHAR(2)
, selected CHAR(3)
, [column] VARCHAR(250))

-- insert the data from procedure's rresult into temporary table
INSERT #temp
EXEC sp_depends @objname = N'Samplesp1'

SELECT NAME
FROM #temp t
--Filter condition
WHERE t.type = 'user table'

drop TABLE #temp 

本文 - How to Share Data between Stored Procedures显示了适合您的方案的各种其他方法。

我个人最喜欢的所有选项都使用OPENQUERY

SELECT  *  FROM    
OPENQUERY(YOURSERVERNAME, 'EXEC MyProc @parameters')
WHERE somefield = anyvalue

在SO中已经有一个已经很好回答的问题 - SQL Server - SELECT FROM stored procedure。查看答案也会给你一些更好的选择。