我有一个存储过程,它接受一个参数并返回true或false。
我需要从表中选择那些存储过程为它们返回true的行。
例如,假设我的表格包含以下列:IdEmployee
,Name
,Address
和Phone
如果员工分别签订了服务合同,则存储过程需要IdEmployee
并返回true
或false
。
最后,一旦我获得了过滤的行集,那些服务收缩的行,我需要再次过滤它们以获得满足其他条件的行,以便最终获得最终结果。
最好的方法是使用单个select获取最终结果,然后从该select中为where子句中的每一行执行存储过程,以选择存储过程返回true的那些行。不幸的是,这是不可能的,我无法在select
(where子句)中执行存储过程。
我无法将存储过程更改为函数,我不想使用游标。
我正在考虑创建一个调用存储过程的标量函数,然后在select中使用标量函数。
我该怎么做?有什么想法吗?
答案 0 :(得分:0)
我自己没有试过INSERT-EXEC,但它可能就是你所需要的。如果您创建临时表或表变量并使用INSERT-EXEC填充,则可以使用该表进行过滤。
--INSERT...EXECUTE procedure example
INSERT INTO dbo.EmployeeSales
EXECUTE dbo.uspGetEmployeeSales;
GO