我正在构建的 MS SQL 2008 R2 中有一个存储过程(SP),它需要用户列表来缩小返回的数据范围。
我正在处理的系统有一个 GetUsers SP,它返回一个用户列表,然后我需要使用它来限制从我自己正在处理的 SP 返回的结果。
我已经查看了 TABLE 变量,但不确定这是否正是我所需要的。
我将如何将一个 SP 的结果集成到另一个 SP 的 where 子句中?
我正在构建的 MS SQL 2008 R2 中有一个存储过程(SP),它需要用户列表来缩小返回的数据范围。
我正在处理的系统有一个 GetUsers SP,它返回一个用户列表,然后我需要使用它来限制从我自己正在处理的 SP 返回的结果。
我已经查看了 TABLE 变量,但不确定这是否正是我所需要的。
我将如何将一个 SP 的结果集成到另一个 SP 的 where 子句中?
您可以通过以下方式获取 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 转换为表值函数。
在 SQL Server 中,如果 SP 返回 a ,则如果返回的数据量较大TABLE
,则最好使用表变量 (@Table)或内存表 (#Table) 。