5

我正在构建的 MS SQL 2008 R2 中有一个存储过程(SP),它需要用户列表来缩小返回的数据范围。

我正在处理的系统有一个 GetUsers SP,它返回一个用户列表,然后我需要使用它来限制从我自己正在处理的 SP 返回的结果。

我已经查看了 TABLE 变量,但不确定这是否正是我所需要的。

我将如何将一个 SP 的结果集成到另一个 SP 的 where 子句中?

4

2 回答 2

10

您可以通过以下方式获取 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 转换为表值函数。

于 2012-09-06T09:47:02.217 回答
1

在 SQL Server 中,如果 SP 返回 a ,则如果返回的数据量较大TABLE,则最好使用表变量 (@Table)内存表 (#Table) 。

于 2012-09-06T09:47:14.833 回答