如何在SQL的where子句中调用存储过程

时间:2013-05-01 06:34:06

标签: sql sql-server sql-server-2008 tsql sql-server-2005

我有一个T-SQL脚本,需要在where子句中调用存储过程。此存储过程接受参数并返回位结果。请指导我如何做到这一点。

由于

编辑: 我不能修改这个sp并使它成为一个函数。请

2 个答案:

答案 0 :(得分:6)

您不能在where子句中使用Stored Procedure,但可以在where子句中使用User Defined Function

如果你不能将SP转换为函数,那么你必须首先从执行SP获取位值并在where子句中使用该变量。

答案 1 :(得分:4)

您可以使用临时表存储存储过程的输出并在where子句中使用它。 临时变量中的列数必须与过程的结果集中的列数相同,并且与存储过程结果集中的列的精确数据类型相同。 例如,

create table #spResult ({columns as result of your sp})

insert into #spResult exec YourSP ({input parameters})

select * from yourtable 
where col in (select col from #spResult) 

drop table #spResult