Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在SQL Server中运行存储过程的where子句而不进行编辑?_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server 如何在SQL Server中运行存储过程的where子句而不进行编辑?

Sql server 如何在SQL Server中运行存储过程的where子句而不进行编辑?,sql-server,sql-server-2008,Sql Server,Sql Server 2008,如果我有一个返回结果表的SQL SERVER 2008存储过程,是否可以在不编辑存储过程本身的情况下对结果表运行WHERE子句?不直接执行 将输出重定向到临时表。从中选择并筛选 CREATE TABLE #foo (...) INSERT #foo EXEC bar @p1 SELECT * FROM @foo WHERE ... 不直接 将输出重定向到临时表。从中选择并筛选 CREATE TABLE #foo (...) INSERT #foo EXEC bar @p1 SELECT

如果我有一个返回结果表的SQL SERVER 2008存储过程,是否可以在不编辑存储过程本身的情况下对结果表运行
WHERE
子句?

不直接执行

将输出重定向到临时表。从中选择并筛选

CREATE TABLE #foo (...)

INSERT #foo EXEC bar @p1

SELECT * FROM @foo WHERE ...
不直接

将输出重定向到临时表。从中选择并筛选

CREATE TABLE #foo (...)

INSERT #foo EXEC bar @p1

SELECT * FROM @foo WHERE ...

我建议创建一个临时表,将存储过程的结果插入其中,然后使用
WHERE
子句从中进行选择。

我建议创建一个临时表,将存储过程的结果插入其中,然后使用
WHERE
子句从中进行选择。

您可以使用一个表值函数,并结合这里的其他答案。。。ie:创建一个TVF,它创建一个连接本地临时表,用存储过程调用的结果填充该表并返回结果。然后,您可以应用所需的
WHERE
子句,从该TVF中执行
选择


不过,对于大型数据集,这可能会非常慢

您可以使用表值函数,并将其与此处的其他答案结合起来。。。ie:创建一个TVF,它创建一个连接本地临时表,用存储过程调用的结果填充该表并返回结果。然后,您可以应用所需的
WHERE
子句,从该TVF中执行
选择


不过,对于大型数据集,这可能会非常慢

Openrowset是我脑海中的一个选项,它的工作原理如下

SELECT  *
FROM    OPENROWSET ('SQLOLEDB','Server=(local);TRUSTED_CONNECTION=YES;','set fmtonly off      exec master.dbo.sp_who')
AS tbl

您可以直接应用where子句。

Openrowset是我脑海中的一个选项,它的工作原理如下

SELECT  *
FROM    OPENROWSET ('SQLOLEDB','Server=(local);TRUSTED_CONNECTION=YES;','set fmtonly off      exec master.dbo.sp_who')
AS tbl

您可以直接应用where子句。

有没有其他方法可以直接使用where子句。

有没有其他方法可以直接使用where子句呢。