我有一个存储过程,该存储过程返回一组特定的生成器的ID列表,然后我希望能够使用该存储过程的结果作为另一个查询的一部分。
我可以编写如下查询吗:
select * from table where id in (exec dbo.storedprocedurename)
答案 0 :(得分:0)
使用表变量和JOIN
,您可以实现此目的。将过程结果存储到表中。
DECLARE @ProcOutput TABLE (Id INT);
INSERT INTO @ProcOutput (Id)
EXEC [dbo].[storedprocedurename]
SELECT T.*
FROM Table T
JOIN @ProcOutput O ON O.Id = T.Id
如果该过程返回多个条目,则根据输出,您可以重新设计表的模式。
答案 1 :(得分:0)
如果您的过程输出为2列,则可以尝试以下操作:
INSERT INTO MyTable
(
Col1,
Col2
)
EXEC [dbo].[storedprocedurename]
GO
SELECT * FROM TABLE WHERE ID IN (SELECT Col1 from Mytable)