Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Crea dinamicamente una tabella temporanea in base al set di risultati di SP

Risposta breve:no, non puoi farlo.

Devi pre-dichiarare la tua tabella temporanea con il numero esatto di colonne che verranno restituite dal processo memorizzato.

La soluzione alternativa consiste nell'utilizzare tabelle persistenti. Ad esempio, potresti avere una tabella permanente nel tuo database chiamata someSPResults. Ogni volta che alcuniSP vengono modificati per avere un numero diverso di colonne di output, modificare il formato di alcuniSPResults come parte della distribuzione.

Quindi puoi farlo:

insert into dbo.someSPresults
exec someSP

Oppure all'interno di someSP, puoi inserire i risultati direttamente nella tabella someSPresults come una normale parte dell'esecuzione. Devi solo assicurarti di identificare esattamente quali record nella tabella someSPresults provenivano da ogni esecuzione di someSP, perché quel processo memorizzato potrebbe essere attivato più volte contemporaneamente, scaricando così molti dati in someSPresults.