在我无法编辑的存储过程周围放置一个where子句

时间:2014-06-20 07:27:19

标签: sql sql-server stored-procedures

我有一个存储过程,我无权编辑名为[usp_ItemsAndDescriptions]

这给出了一个结果,我的电话看起来像这样:

USE [eboghandel]
GO

DECLARE @return_value int

EXEC    @return_value = [dbo].[usp_ItemsAndDescriptions]
        @StartDate = N'2014-06-01',
        @EndDate = N'2014-06-19',
        @Top = 10000

SELECT  'Return Value' = @return_value

GO

然后,此存储过程会提供字段列表。其中一个字段称为PressDescription

现在我想发表一个WHERE声明,所以我可以说:

SELECT * FROM MYSTOREDPROCEDURERESULT mys WHERE mys.PressDescription = '1'

这样做的语法是什么?不幸的是,我没有权限编辑存储过程,即使这是最佳的。

1 个答案:

答案 0 :(得分:1)

您应该将返回数据从SP加载到临时表,并通过WHERE子句过滤此表:

创建临时表:

CREATE TABLE #tmp
(
   ...
)

在表格中插入数据

INSERT INTO #tmp
EXEC usp_ItemsAndDescriptions 
@StartDate = N'2014-06-01',
@EndDate = N'2014-06-19',
@Top = 10000

过滤数据

SELECT * FROM #tmp mys WHERE mys.PressDescription = '1'

同时检查此链接 - 有很多方法可以从SP Insert results of a stored procedure into a temporary table

加载数据