У меня есть хранимая процедура, которая возвращает два выбора, которые я использую в отчете. Первые выберите данные для отображения в табличном формате и второй являются метаданными для отображения в голове отчета, как показано ниже:Как SELECT [temp table1] = [subselect 1], [temp table2] = [subselect 2] FROM [Сохраненная процедура]
CREATE PROCEDURE dbo. GetReport
@Input INT
AS
BEGIN
--Get #Metadata
-- #Results = f(#Metadata) … compex calculation
SELECT * FROM #Results
SELECT * FROM #Metadata
END
Поскольку расчет sproc довольно интенсивно, я хотел бы подготовить строки отчета как простые данные (в двух таблицах: PrecalcResults и PrecalcMetadata) для некоторых наиболее часто используемых параметров sproc за одну ночь. Скорее я бы сразу выбрал предварительно рассчитанные значения или вычислил их с помощью sproc в соответствии с параметрами.
По причинам технического обслуживания я хотел бы использовать тот же sproc для расчета данных, которые были бы: 1. показал в отчете 2. храниться в PrecalcResults и PrecalcMetadata (с используемыми параметрами)
Если я у меня был бы единственный выбор sproc. Я бы подошел к этому описанию здесь: Insert results of a stored procedure into a temporary table
Поскольку у меня есть мультиселективный sproc, я хотел бы сделать что-то вроде выше, но с двумя таблицами. В .net Я бы сделал DataSet.Tables [0] и DataSet.Tables [1] ..., но я хочу сделать это в tsql, чтобы запустить его в повседневной работе.
Возможно ли это в MS SQL?
Я должен извиниться перед собой, из приведенного ниже ответа я вижу, что я был не очень ясен. Я хотел бы реализовать эту функциональность как чистый TSQL.
Поищите «нескольких активных наборов записей» (ака MARS). Вам нужно будет использовать метод «NextRecordset» для перехода от одного набора записей к другому. – HABO