如何在选择中的IN运算符中使用存储过程的结果?

时间:2014-09-25 15:40:13

标签: sql-server tsql

我创建了一个存储过程(让它命名为 Proc1 ),它通过相对复杂的选择返回ID的集合(整数)。

程序 Proc1 返回如下所示的记录集:

ID

_ _

123

234

55555

677889

现在,我想创建一个函数,它将在此函数中返回varchar作为算法的结果,但是我遇到了一个问题,因为我不能写出类似的东西:

select something from tbl where tbl.id in (exec Proc1 @FunctionInputParam)

你能解释一下如何在IN运算符中使用这样的存储过程吗?

编辑: MSSQL 2012

2 个答案:

答案 0 :(得分:2)

所有这些"相对复杂的选择"只有SELECT个陈述?如果是,则创建一个函数而不是一个过程,以便稍后使用它

select something from tbl where tbl.id in( select col from myView)

答案 1 :(得分:0)

我所知道的最简单的方法是临时表或表变量,并插入proc的结果,然后在in中使用它:

declare @tmp table (i int);
insert @tmp exec Proc1 @FunctionInputParam;
select something from tbl where tbl.id in (select i from @tmp);