Ho una stored procedure che restituisce due selezioni, che uso in un report. La prima selezione è dati da visualizzare in formato tabulare ed i secondi sono metadati da visualizzare nella testa relazione, come mostrato di seguito:Come selezionare [temp table1] = [subselect 1], [temp table2] = [subselect 2] FROM [Stored procedure]
CREATE PROCEDURE dbo. GetReport
@Input INT
AS
BEGIN
--Get #Metadata
-- #Results = f(#Metadata) … compex calculation
SELECT * FROM #Results
SELECT * FROM #Metadata
END
Dato che il calcolo sproc è piuttosto intenso, vorrei preparare le linee di riporto come dati semplici (in due tabelle: PrecalcResults e PrecalcMetadata) per alcuni parametri sproc maggiormente utilizzati durante la notte. Meglio vorrei selezionare direttamente i valori precalcolati o calcolarli con lo sproc secondo i parametri.
Per motivi di manutenzione vorrei utilizzare lo stesso sproc per calcolare i dati che sarebbero: 1. mostrato nel rapporto 2. essere immagazzinate nella PrecalcResults e PrecalcMetadata (con i parametri utilizzati)
Se io avrei un singolo selezionare sproc vorrei un approccio desctibed qui: Insert results of a stored procedure into a temporary table
Come ho sproc multiselect mi piacerebbe fare qualcosa come sopra ma con due tavoli. In .net vorrei fare DataSet.Tables [0] e DataSet.Tables [1] ..., ma voglio farlo in tsql, per eseguirlo nel lavoro quotidiano.
Ciò è possibile anche in MS SQL?
Devo scusarmi, dalla risposta in basso vedo che non ero molto chiaro. Mi piacerebbe implementare questa funzionalità come puro TSQL.
prova a cercare "di record attivi multipli" (aka MARS). Avrai bisogno di usare il metodo 'NextRecordset' per spostarti da un recordset al successivo. – HABO