在Where子句中使用存储过程的结果

Tom*_*Tom 4 sql sql-server sql-server-2008-r2

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

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

我看过TABLE变量,但不确定这是否是我需要的.

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

pod*_*ska 8

你可以通过你的SP的结果

DECLARE @yourtablevariable TABLE (fields....)    

INSERT INTO @yourtablevariable
EXEC GetUsers
Run Code Online (Sandbox Code Playgroud)

然后

SELECT *
FROM othertable
    INNER JOIN @yourtablevariable users on othertable.userid=users.userid
Run Code Online (Sandbox Code Playgroud)

要么

SELECT *
FROM othertable
WHERE userid in (SELECT UserID FROM @yourtablevariable)
Run Code Online (Sandbox Code Playgroud)

或者,如果可能,您可以将GetUsers转换为表值函数.