如何选择[temp table1] = [subselect 1],[temp table2] = [subselect 2] FROM [Stored Procedure]

Cer*_*nic 5 sql t-sql stored-procedures sql-server-2005

我有一个存储过程返回两个选择,我在报告中使用.第一个选择是以表格格式显示的数据,第二个选择是要在报告头中显示的元数据,如下所示:

CREATE PROCEDURE dbo. GetReport    
@Input INT
AS 
BEGIN          
   --Get #Metadata    
   -- #Results = f(#Metadata) … compex calculation          
   SELECT * FROM #Results    
   SELECT * FROM #Metadata    
END
Run Code Online (Sandbox Code Playgroud)

由于sproc计算非常密集,我想将报告行准备为普通数据(在两个表中:PrecalcResults和PrecalcMetadata),以便在一夜之间使用一些主要使用的sproc参数.Lather我会直接选择预先计算的vaues或根据参数用sproc计算它们.

出于维护原因,我想使用相同的sproc来计算以下数据:1.在报告中显示2.存储在PrecalcResults和PrecalcMetadata中(使用的参数)

如果我有单一选择sproc,我会在这里解决方法: 将存储过程的结果插入临时表

因为我有多选sproc我想做上面的事情,但有两个表.在.net我会做DataSet.Tables [0]和DataSet.Tables [1] ...,但我想在tsql中做,在日常工作中运行它.

这在MS SQL中甚至可能吗?


我必须自己道歉,从下面的答案我可以看出我不是很清楚.我想将此功能实现为纯TSQL.

Mic*_*son 2

是的,这是可能的。

正如您所建议的那样,从单个存储过程返回多个结果集是完全可以的。

您唯一的潜在问题是无法TableAdapter从存储过程中提取两个结果集,但有一个非常简单的解决方法可以解决该问题。