执行NOT IN()语句中的过程

时间:2017-08-22 16:23:03

标签: sql sql-server stored-procedures

在SQL Server中具有以下存储过程

CREATE PROCEDURE storeProcedureExample
(
    @displayName NVARCHAR(256)
)
AS

SELECT users.id --user.id is INT
FROM users
WHERE users.displayName = @displayName 
--there could be many ids from the same display name

如何在声明中将其称为NOT IN?

错误示例:

DECLARE @displayName NVARCHAR(256) = 'SomeRandomName'

SELECT * 
FROM users
WHERE users.id NOT IN (EXEC storeProcedureExample @displayName)

注意:我对更有效地重写它并不感兴趣。我只想知道如何在NOT IN参数中调用该过程。它给了我"'''""""""关闭结论参数或EXEC

我正在使用SQL Server Management Studio v17.1

1 个答案:

答案 0 :(得分:5)

你不能直接。这就是为什么你应该使用表值函数而不是存储过程。

使用存储过程,您需要在表中创建一个本地表exec(),然后使用临时表进行查询。