Sql server 2008 选择满足存储过程中计算的条件的行
我有一个存储过程,它接受一个参数并返回true或false 我需要从表中选择存储过程为其返回true的行 例如,假设我的表有以下列:Sql server 2008 选择满足存储过程中计算的条件的行,sql-server-2008,tsql,stored-procedures,user-defined-functions,Sql Server 2008,Tsql,Stored Procedures,User Defined Functions,我有一个存储过程,它接受一个参数并返回true或false 我需要从表中选择存储过程为其返回true的行 例如,假设我的表有以下列:IdEmployee、Name、Address和Phone 存储过程接受ideemployee,并返回true或false,前提是员工是否分别签订了服务合同 最后,一旦我得到一组经过筛选的行,那些有服务合约的行,我需要再次筛选它们,以获得那些满足其他一些条件的行,从而最终得到最终结果 最好是使用单个select获得最终结果,然后从该select中,对where子句中
IdEmployee
、Name
、Address
和Phone
存储过程接受ideemployee
,并返回true
或false
,前提是员工是否分别签订了服务合同
最后,一旦我得到一组经过筛选的行,那些有服务合约的行,我需要再次筛选它们,以获得那些满足其他一些条件的行,从而最终得到最终结果
最好是使用单个select获得最终结果,然后从该select中,对where子句中的每一行执行存储过程,以选择存储过程返回true的行。不幸的是,这是不可能的,我无法从select
(where子句)中执行存储过程
我不能将存储过程更改为函数,也不想使用游标
我想创建一个标量函数来调用存储过程,然后在select中使用标量函数
我该怎么做?有什么想法吗?我自己也没试过,但可能正是你需要的。如果创建临时表或表变量并填充INSERT-EXEC,则可以使用该表进行筛选
--INSERT...EXECUTE procedure example
INSERT INTO dbo.EmployeeSales
EXECUTE dbo.uspGetEmployeeSales;
GO
我自己也没试过,但这可能是你需要的。如果创建临时表或表变量并填充INSERT-EXEC,则可以使用该表进行筛选
--INSERT...EXECUTE procedure example
INSERT INTO dbo.EmployeeSales
EXECUTE dbo.uspGetEmployeeSales;
GO
你别无选择,只能使用一个循环,可能带有一个光标。你能把过程代码和你的查询添加到你的问题中吗?这可能是使用不同的方法实现的,但是您没有提供足够的信息让我们了解它们可能是什么。您是否可以重写当前函数以输出服务的所有ID。然后,您可以将它们保存到一个表中,只使用联接。除了使用循环(可能带有光标)之外,您别无选择。您可以将过程代码和查询添加到问题中吗?这可能是使用不同的方法实现的,但是您没有提供足够的信息让我们了解它们可能是什么。您是否可以重写当前函数以输出服务的所有ID。然后,您可以将它们保存到表中,只需使用联接即可。