我在MS SQL 2008 R2中有一个存储过程(SP),我需要一个用户列表来缩小返回的数据。
我正在使用的系统有一个GetUsers SP,它返回一个用户列表,然后我需要用它来限制从我自己工作的SP返回的结果。
我看过TABLE变量,但不确定这是否是我需要的。
我如何将一个SP的结果整合到另一个SP的where子句中?
答案 0 :(得分:8)
您可以通过
获取SP的结果DECLARE @yourtablevariable TABLE (fields....)
INSERT INTO @yourtablevariable
EXEC GetUsers
然后
SELECT *
FROM othertable
INNER JOIN @yourtablevariable users on othertable.userid=users.userid
或者
SELECT *
FROM othertable
WHERE userid in (SELECT UserID FROM @yourtablevariable)
或者,如果可能,您可以将GetUsers转换为表值函数。
答案 1 :(得分:1)
在SQL Server中,如果SP返回TABLE
,则使用表变量 (@ Table)或内存表的最佳方式 (#Table)如果返回的数据量更大。