5

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

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

由于 sproc 计算非常密集,我想在一夜之间为一些最常用的 sproc 参数准备报告行作为纯数据(在两个表中:PrecalcResults 和 PrecalcMetadata)。泡沫我会直接选择预先计算的值或根据参数用sproc计算它们。

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

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

由于我有 multiselect sproc,我想做类似上面的事情,但有两个表。在 .net 中我会执行 DataSet.Tables[0] 和 DataSet.Tables[1]...,但我想在 tsql 中执行它,以便在日常工作中运行它。

这在 MS SQL 中是否可行?


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

4

1 回答 1

2

是的,这是可能的。

正如您所建议的,从单个存储过程返回多个结果集是非常好的。

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

于 2012-04-12T19:49:45.660 回答