我有一个存储过程,它接受一个uniqueidentifier并返回一个表。我想要做的是像常规表一样使用这些结果,但我意识到SQL仍然是有限的,并且不允许它(还是!)
示例:
SELECT *
FROM MyTable MT
WHERE NOT EXISTS
(SELECT *
FROM MyStoredProc(MT.ID) MSP
WHERE MT.SomeData = MSP.SomeData)
这个问题有替代解决方案吗?请不要建议使用函数或视图,因为它们不能与存储过程交换。考虑到SQL的时代,我真的很惊讶开发人员尚未实现这一点。
任何帮助都会非常感激!
答案 0 :(得分:0)
该语法不起作用。您必须将存储过程的结果转储到临时表中并引用临时表。 因为参数,我建议创建一个可以一次执行所有ID的proc的新版本,或者将proc代码放入一个表值函数(可以使用你试图使用的语法执行)