在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
答案 0 :(得分:5)
你不能直接。这就是为什么你应该使用表值函数而不是存储过程。
使用存储过程,您需要在表中创建一个本地表exec()
,然后使用临时表进行查询。