如果我有一个返回结果表的 SQL SERVER 2008 存储过程,是否可以在WHERE
不编辑存储过程本身的情况下对结果表运行子句?
问问题
1233 次
4 回答
4
不是直接的。
将输出重定向到临时表。从中选择并过滤
CREATE TABLE #foo (...)
INSERT #foo EXEC bar @p1
SELECT * FROM @foo WHERE ...
于 2012-08-27T13:14:14.927 回答
0
我建议创建一个#temp 表以将存储过程的结果插入到该表中,然后使用该WHERE
子句从中进行选择。
于 2012-08-27T13:15:12.353 回答
0
您可以使用表值函数,并将其与此处的其他答案结合起来......即:创建一个 TVF,它创建一个连接本地临时表,用存储过程调用的结果填充该表并返回结果. 然后,您可以SELECT
从该 TVF 应用所需的WHERE
子句。
但是,对于大型数据集,这可能会非常慢!!
于 2012-08-27T13:20:41.597 回答
0
Openrowset 是我想到的一个选项,它的工作原理是这样的
SELECT *
FROM OPENROWSET ('SQLOLEDB','Server=(local);TRUSTED_CONNECTION=YES;','set fmtonly off exec master.dbo.sp_who')
AS tbl
您可以直接应用 where 子句。
于 2012-08-27T13:42:42.967 回答