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

use*_*510 6 sql t-sql sql-server sql-server-2005 sql-server-2008

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

谢谢

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

Sac*_*hin 6

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

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


Mud*_*san 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 
Run Code Online (Sandbox Code Playgroud)