是否可以在 IN 子句中调用存储过程?
Select field0, field2 FROM Table
WHERE field0 in (exec storedproc)
之所以使用存储过程是因为它的复杂性
最佳答案
您可能必须使用 OpenRowset实现这一目标。
Select Field0, Field2 From Table
Where Field0 in (
SELECT Field0 FROM OPENROWSET('SQLNCLI',
'Server=SERVERNAME;Trusted_Connection=yes;',
'EXEC StoredProc')
)
为此,必须在服务器上启用以下选项:
sp_configure 'Show Advanced Options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
如果无法更改这些设置,那么另一个选项(正如在评论中与 Martin 讨论的那样)是填充一个临时表。
例如
declare @t table
(
Field0 int,
Field1 varchar(100)
...
)
Insert Into @t
Exec storedProcedure
Select Field0, Field2 From Table
Where Field0 in (
SELECT Field0 FROM @t
)
要将存储过程的结果插入临时表,临时表的定义必须与存储过程的结果完全匹配。
关于sql - 在 SQL Server 的 IN 子句中调用存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4955463/