Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Erstellen Sie dynamisch eine temporäre Tabelle basierend auf dem Resultset von SP

Kurze Antwort:nein, das geht nicht.

Sie müssen Ihre temporäre Tabelle mit der genauen Anzahl von Spalten vordeklarieren, die von der gespeicherten Prozedur zurückgegeben werden.

Die Problemumgehung besteht darin, persistente Tabellen zu verwenden. Beispielsweise könnten Sie in Ihrer Datenbank eine permanente Tabelle mit dem Namen someSPResults haben. Immer wenn someSP geändert wird, um eine andere Anzahl von Ausgabespalten zu haben, ändern Sie das Format von someSPResults als Teil der Bereitstellung.

Dann können Sie entweder Folgendes tun:

insert into dbo.someSPresults
exec someSP

Oder Sie können die Ergebnisse innerhalb von someSP als normalen Teil der Ausführung direkt in die Tabelle someSPresults einfügen lassen. Sie müssen nur sicherstellen, dass Sie genau identifizieren, welche Datensätze in der someSPresults-Tabelle von jeder Ausführung von someSP stammen, da diese gespeicherte Prozedur mehrere Male gleichzeitig ausgelöst werden könnte, wodurch eine Menge Daten in someSPresults ausgegeben werden.