zu meinem Wissen; Was ich tun möchte, ist in SQL nicht möglich, aber es lohnt sich, euch zu fragen.Exec gespeicherte Prozedur in dynamische Temp-Tabelle
Sagen wir, ich habe eine gespeicherte Prozedur abc, die Spalten Id und Wert zurückgibt. Diese gespeicherte Prozedur wird hauptsächlich von anderen Abteilungen aus funktionalen Gründen benutzt und ich werde sie nur gelegentlich für Datenprüfungen verwenden.
mit ihm also als Teil meiner gespeicherten Prozedur:
DECLARE @tABC TABLE
(
ID INT,
Value DECIMAL(12,2)
)
INSERT INTO @tABC
EXEC OtherDb.DataProd.abc
Oky so wird dies perfekt für jetzt arbeiten, aber was ist, wenn sie die Struktur ihrer gespeicherten Prozedur ändern?
Wenn Sie eine Spalte aus der gespeicherten Prozedur hinzufügen oder entfernen, wird mein Code beschädigt, und Sie können meinen Code flexibler gestalten.
Mein letzter verzweifelter Versuch ging ungefähr so:
WITH tempTable AS
(
EXEC OtherDb.DataProd.abc
)
SELECT ID, Value FROM tempTable
die offensichtlich kläglich gescheitert.
Aus diesem Grund sollten Sie Tabellenwertefunktionen oder Tabellenvariablen anstelle von gespeicherten Prozeduren verwenden, um Tabellen zurückzugeben. Wie auch immer, OPENROWSET könnte eine Lösung für Sie sein – adrianm
@adrianm Ihr Kommentar zu UDFs hat mein Problem gelöst. Ich kann nicht glauben, dass ich das vorher nicht gesehen habe. – JAT
mögliches Duplikat von [Ergebnisse einer gespeicherten Prozedur in eine temporäre Tabelle einfügen] (http://stackoverflow.com/questions/653714/inser-results-of-a-stored-procedure-into-a-miremporary-table) –