使用where子句筛选存储过程的结果集

Sco*_*ein 3 t-sql sql-server

我想过滤存储过程的结果集.我想要的是以下(非工作)语法:

IF EXISTS ( SELECT 1 FROM  (EXEC  sp_linkedservers) WHERE srv_name = 'myServer' )
    PRINT N'dropping linked servers'
GO
Run Code Online (Sandbox Code Playgroud)

编辑 - 这只是一个例子,如果可能的话,我想要一个通用的解决方案

Mal*_*och 12

您可以将存储过程的结果放入临时表或表变量之前,然后查询该表,将任何where子句应用于您想要的内容.

将帖子

像这样:

DECLARE @foo TABLE
(
SRV_NAME NVARCHAR(100),
SRV_PROVIDERNAME NVARCHAR(100),
SRV_PRODUCT NVARCHAR(100),
SRV_DATASOURCE NVARCHAR(100),
SRV_PROVIDERSTRING NVARCHAR(100),
SRV_LOCATION NVARCHAR(100),
SRV_CAT NVARCHAR(100)
)

INSERT INTO @foo
EXEC  sp_linkedservers

SELECT * FROM @foo WHERE SRV_PRODUCT = 'SQL Server'
Run Code Online (Sandbox Code Playgroud)

当然,您可以将最终的where子句更改为您想要过滤的内容.

  • 有没有办法在不声明结果集模式的情况下做到这一点? (2认同)