检查存储过程的结果中是否存在值

时间:2019-07-17 11:18:54

标签: sql-server select stored-procedures

我有一个存储过程,该存储过程返回一组特定的生成器的ID列表,然后我希望能够使用该存储过程的结果作为另一个查询的一部分。

我可以编写如下查询吗:

select * from table where id in (exec dbo.storedprocedurename)

2 个答案:

答案 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)