Ich habe eine gespeicherte Prozedur, die 80 Spalten und 300 Zeilen zurückgibt. Ich möchte eine Auswahl schreiben, die 2 dieser Spalten erhält. Etwas wie
SELECT col1, col2 FROM EXEC MyStoredProc 'param1', 'param2'
Wenn ich die obige Syntax verwendet habe, erhalte ich den Fehler:
"Spaltenname ungültig".
Ich weiß, dass die einfachste Lösung darin besteht, die gespeicherte Prozedur zu ändern, aber ich habe sie nicht geschrieben und kann sie nicht ändern.
Gibt es eine Möglichkeit zu tun, was ich will?
Ich könnte eine temporäre Tabelle erstellen, um die Ergebnisse einzufügen, aber da es 80 Spalten gibt, müsste ich eine temporäre Tabelle mit 80 Spalten erstellen, um 2 Spalten zu erhalten. Ich wollte vermeiden, alle zurückgegebenen Spalten aufzuspüren.
Ich habe versucht,
WITH SprocResults AS ....
wie von Mark vorgeschlagen zu verwenden, aber ich habe 2 Fehler erhaltenFalsche Syntax in der Nähe des Schlüsselworts 'EXEC'.
Falsche Syntax in der Nähe ')'.Ich habe versucht, eine Tabellenvariable zu deklarieren, und habe den folgenden Fehler erhalten
Einfügefehler: Der Spaltenname oder die Anzahl der angegebenen Werte stimmen nicht mit der Tabellendefinition überein
Wenn ich es versuche,
SELECT * FROM EXEC MyStoredProc 'param1', 'param2'
erhalte ich den Fehler:Falsche Syntax in der Nähe des Schlüsselworts 'exec'.
EXEC
ist kein MySQL-Schlüsselwort (das MySQL-Äquivalent sind vorbereitete Anweisungen ). Obwohl ich die Antwort für MySQL wissen möchte, zielen die folgenden Antworten auf T-SQL ab. Retagging.