Benutzer mit den meisten Antworten
DynSQL, Rückgabe als Tabelle möglich?
-
Hallo zusammen,
ich muss dynamische SQL verwenden da ich alle Datenbanken auf dem Server durchgehen muss die einem bestimmten Muster im Datenbanknamen entsprechen.
Bisher hatte ich nur single Values zum abfragen die ich dann in eine temporäre Tabelle geschrieben habe um am schluss eine Auswertung über alle Angaben machen zu können.
Nun muss ich pro Datenbank eine Tabelle auslesen, in der von 0 bis x Einträge sein können.
Was mich nun interessiert, wie kann ich über den output-Patameter mehr als ein Wert abfragen?
Viele Grüsse,
Maximilian
Frage
Antworten
-
Hallo Maxi,
z. B.:
CREATE PROC dbo.InsertExec @wert int = 1 AS SELECT @wert AS Wert, @wert * @wert AS WertQuadrat; RETURN 0; GO CREATE TABLE #Werte (Wert int, WertQuadrat int); INSERT INTO #Werte (Wert, WertQuadrat) EXEC dbo.InsertExec 42; SELECT * FROM #Werte;
Gruß Elmar
- Als Antwort markiert MaxiTesch Freitag, 13. Dezember 2013 21:00
Alle Antworten
-
Hallo Maximilian,
Tabellenwert-Parameter sind nur als Eingabe verwendbar und schreibgeschützt.
Bei Ausgabe-Parametern bist Du auf skalare Werte oder einen Cursor beschränkt, siehe CREATE PROCEDURE.
Möglich (wenn auch etwas mühselig) wäre ein XML-Parameter. Oder aber Du gibst das Ergebnis am Ende als SELECT Resultset zurück und fügst es via INSERT EXEC in eine (temporäre) Tabelle ein.
Gruß Elmar
-
Hallo Elmar,
vielen Dank für die Antwort, nicht ganz was ich gerne hätte :-)
Ich denke dann versuche ich eine globale temporäte Tabelle zu erstellen um dann die Werte aus dem dynSQL dort abzulegen.
Lieber wäre es mir natürlich wenn ich das Result aus dem dynSQL an eine Tabelle geben könnte.
Gruss,
Maximilian -
Hallo Maxi,
z. B.:
CREATE PROC dbo.InsertExec @wert int = 1 AS SELECT @wert AS Wert, @wert * @wert AS WertQuadrat; RETURN 0; GO CREATE TABLE #Werte (Wert int, WertQuadrat int); INSERT INTO #Werte (Wert, WertQuadrat) EXEC dbo.InsertExec 42; SELECT * FROM #Werte;
Gruß Elmar
- Als Antwort markiert MaxiTesch Freitag, 13. Dezember 2013 21:00

