【发布时间】:2017-06-07 14:43:24
【问题描述】:
我有一个存储过程,它接受一个参数并返回真或假。
我需要从表中选择存储过程为它们返回 true 的那些行。
例如,假设我的表有以下列:IdEmployee、Name、Address 和 Phone
存储过程采用IdEmployee 并返回true 或false(如果员工已分别签订服务合同或未签订服务合同)。
最后,一旦我过滤了一组行,那些有服务合同的行,我需要再次过滤它们以获得满足其他一些条件的行,最终得到最终结果。
最好的方法是使用单个选择获得最终结果,并从该选择中为 where 子句中的每一行执行存储过程,以选择存储过程返回 true 的那些。不幸的是,这是不可能的,我无法从select(where 子句)中执行存储过程。
我无法将存储过程更改为函数,并且我不想使用游标。
我正在考虑创建一个调用存储过程的标量函数,然后在选择中使用该标量函数。
我该怎么做?有什么想法吗?
【问题讨论】:
-
您别无选择,只能使用循环,可能带有光标。
-
您可以将程序代码和您的查询添加到您的问题中吗?使用不同的方法可能可以做到这一点,但您没有提供足够的信息让我们探索它们可能是什么。
-
你能不能重写当前函数来输出所有签约服务的ID。然后,您可以将它们保存到表中并使用连接。
标签: sql-server-2008 tsql stored-procedures user-defined-functions