选择满足存储过程中计算条件的行

时间:2017-06-07 14:43:25

标签: sql-server-2008 tsql stored-procedures user-defined-functions

我有一个存储过程,它接受一个参数并返回true或false。

我需要从表中选择那些存储过程为它们返回true的行。

例如,假设我的表格包含以下列:IdEmployeeNameAddressPhone

如果员工分别签订了服务合同,则存储过程需要IdEmployee并返回truefalse

最后,一旦我获得了过滤的行集,那些服务收缩的行,我需要再次过滤它们以获得满足其他条件的行,以便最终获得最终结果。

最好的方法是使用单个select获取最终结果,然后从该select中为where子句中的每一行执行存储过程,以选择存储过程返回true的那些行。不幸的是,这是不可能的,我无法在select(where子句)中执行存储过程。

我无法将存储过程更改为函数,我不想使用游标。

我正在考虑创建一个调用存储过程的标量函数,然后在select中使用标量函数。

我该怎么做?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我自己没有试过INSERT-EXEC,但它可能就是你所需要的。如果您创建临时表或表变量并使用INSERT-EXEC填充,则可以使用该表进行过滤。

--INSERT...EXECUTE procedure example  
INSERT INTO dbo.EmployeeSales   
EXECUTE dbo.uspGetEmployeeSales;  
GO