我需要在 WHERE 子句中调用存储过程来进行 SELECT。
应该是这样的......
选择不同的前 10 名 i.x、d.droit
来自 v_droit d、v_info i
WHERE d.nomdroit='yy'
AND i.id2
AND (从 (exec up_droits(i.x, d.droit)) 选择 val 3
但它不起作用......
任何想法?
不要说用函数替换存储过程,因为不可能在函数中使用现有代码。所以该函数不是一个有效的选项。我真的需要能够使用存储过程
这是通过首先执行存储过程、将输出捕获到 #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
当然,这对您不起作用,因为 up_droits 需要查询中的 i.x 和 d.droit 参数。这表明您的存储过程可能应该是视图或表值函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)