SQL Server 2005:从WHERE子句调用存储过程

Rox*_*ana 2 stored-procedures sql-server-2005 where-clause

我需要在WHERE子句中调用存储过程来创建SELECT.它应该是那样的....

SELECT distinct top 10 ix,d.droit FROM v_droit d,v_info i WHERE d.nomdroit ='yy'AND i.id <> 2 AND(从(exec up_droits(ix,d.droit)中选择val)<> 3

但它不起作用......任何想法?

不要说用函数替换存储过程,因为无法使用函数中的现有代码.所以该功能不是一个有效的选项.我真的需要能够使用存储过程

Rem*_*anu 6

这是通过首先执行存储过程,将输出捕获到#temp表或@tabel变量,然后针对表运行查询来实现的.像这样的东西:

declare @droits_table (val ,... );
insert into @droits_table
exec up_droits(param, param);
SELECT distinct top 10 i.x, d.droit FROM v_droit d, v_info i WHERE d.nomdroit='yy' AND i.id<>2 AND (select val from @droits) <>3
Run Code Online (Sandbox Code Playgroud)

当然这对你不起作用,因为up_droits需要查询中的ix和d.droit参数.这表明您的存储过程应该是视图或表值函数.