Ich habe eine gespeicherte Prozedur, die ein Ergebnis zurückgibt, sagen wir, es gibt Zeilen von Produkten zurück. Aber jeder Produktstatus ist nicht in unserer Hand (kann es nicht bekommen). Unser DBA hat uns gerade eine andere gespeicherte Prozedur gegeben, um den Status eines Produkts zu erhalten. Wir müssen den individuellen Produktstatus erreichen, indem wir ihren SP aufrufen. Lassen Sie uns sagen, dass wir Produkt Tisch haben,Erhalte eine bestimmte Spalte von einem zurückgegebenen Ergebnis von SP?
CREATE TABLE PRODUCTS
(
ID INT,
Name NVARCHAR(100)
)
CREATE PROCEDURE GetProducts
AS
BEGIN
INSERT INTO #TEMPTABLE
SELECT * FROM PRODUCTS; -- Yes Too Much simplified
-- Create cursor and set additional status in #TEMPTABLE
END;
EXEC GetStatus @ProductId; -- SP That need to get status
Das Problem ist, dass GetStatus einzige Weg ist, um den Status zu erhalten und diese manchmal 2 Spalten sp zurückkehren, manchmal 4 und manchmal 8. Die Rückkehr Spalten wird immer auch Statusspalte sicher .
Wenn Spaltennamen festgelegt ist, gibt es kein Problem. Gibt es eine Möglichkeit, eine dynamische Tabelle zum Zeitpunkt der Ausführung von SP zu erstellen.
dies versucht, aber nicht funktioniert,
WITH DynamicTable AS
(
EXEC GetStatus
)
Siehe die oberen zwei Antworten hier: http://stackoverflow.com/questions/653714/inser-results-of-a-stored-procedure-into-a-merminal-table – Nicarus
@Nicarus OPENROWSET ist nicht in unserer aktiviert Server :( – user960567
Die Verwendung von Cursors und #temptable innerhalb eines gespeicherten Proc ist wahrscheinlich ein weiteres Zeichen, dass Ihr DBA nicht den Aufgaben gewachsen ist – Twelfth