如何在SELECT查询中调用存储过程?

时间:2017-07-18 22:17:46

标签: sql sql-server stored-procedures

我有一个存储过程,它接受一个uniqueidentifier并返回一个表。我想要做的是像常规表一样使用这些结果,但我意识到SQL仍然是有限的,并且不允许它(还是!)

示例:

SELECT *
FROM MyTable MT
WHERE NOT EXISTS 
    (SELECT *
     FROM MyStoredProc(MT.ID) MSP
     WHERE MT.SomeData = MSP.SomeData)

这个问题有替代解决方案吗?请不要建议使用函数或视图,因为它们不能与存储过程交换。考虑到SQL的时代,我真的很惊讶开发人员尚未实现这一点。

任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:0)

该语法不起作用。您必须将存储过程的结果转储到临时表中并引用临时表。 因为参数,我建议创建一个可以一次执行所有ID的proc的新版本,或者将proc代码放入一个表值函数(可以使用你试图使用的语法执行)