将SELECT的结果返回给另一个程序

时间:2016-05-06 14:05:14

标签: sql sql-server

我将一个程序结果“返回”到另一个程序时遇到问题。

说明

例如,我们将复杂的SELECT与参数放在一个过程中。

USE [myDB]
GO

ALTER PROCEDURE dbo.Procedure1 @today date
AS


SELECT * FROM complex_query

现在它返回了很多列,列数和行数取决于 @today 值。

不,我想在 Procedure2

中使用 Procedure1 的结果
USE [myDB]
GO

DECLARE @cntMonth INT = 0;

WHILE @cntMonth < 12  
BEGIN
  SELECT x,y,z FROM result_of_Procedure1
  SET @cntMonth = @cntMonth + 1;
END;

为什么我要这样呢? 这是因为我正在处理的软件是连接到DB,运行程序并将结果输出到前端。所以我必须在SQL中一直编码 因此,假设软件正在进行一次性连接,我不希望每次执行 WHILE 语句时都通过 Procedure1 。如何存储Procedure1的效果,以便在循环过程中通过Procedure2使用它,并防止多次运行Procedure1?

1 个答案:

答案 0 :(得分:3)

CREATE TABLE #TempResults
( 
  -- put definition of columns returned from your Procedure1 SP here
)

INSERT INTO #TempResults
EXEC Procedure1

-- now you have your result from Procedure1 in #TempResults
-- use it whatever way you want
SELECT * FROM #TempResults

-- finally drop the temp table when no longer needed
DROP TABLE #TempResults