我创建了一个存储过程(让它命名为 Proc1 ),它通过相对复杂的选择返回ID的集合(整数)。
程序 Proc1 返回如下所示的记录集:
ID
_ _
123
234
55555
677889
现在,我想创建一个函数,它将在此函数中返回varchar作为算法的结果,但是我遇到了一个问题,因为我不能写出类似的东西:
select something from tbl where tbl.id in (exec Proc1 @FunctionInputParam)
你能解释一下如何在IN运算符中使用这样的存储过程吗?
编辑: MSSQL 2012
答案 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);