SELECT-Statement mit mehreren Variablen in einer Skalarwertfunktion aufrufen

14/09/2007 - 11:53 von jupo78 | Report spam
Hallo zusammen!

Hàtte da folgendes Problem:

Ich möchte in einer Skalarwertfunktion einen SQL-Statement mit
mehreren Variablen aufrufen:
set @Res = (SELECT * FROM @DimTable WHERE @DimSpalte = @Field)
Dies funktioniert leider nicht, weil er bei @DimTable eine
Tabellenvariable erwartet.
Ich möchte ihm jedoch mit @DimTable einen String übergeben.

Auf der anderen Seite habe ich mir schon überlegt, ob ich mir eine
Procedure baue, die dieses SQL-Statement ausführt, da ich dort den
EXECUTE-Befehl verwenden kann.
Ich kann jedoch nur via EXECUTE-Befehl die Procedure wiederum
aufrufen, oder?

Ich wàre für jeden Vorschlag dankbar, wie ich dieses Problem lösen
könnte, da mir momentan keine weitere Lösung mehr einfàllt.

Vielen Dank im Voraus für euere Unterstützung
jupo22
 

Lesen sie die antworten

#1 Elmar Boye
14/09/2007 - 12:43 | Warnen spam
Hallo Jürgen,

jupo78 schrieb ...

stelle bitte den Namen im Absender richtig. Danke.

Ich möchte in einer Skalarwertfunktion einen SQL-Statement mit
mehreren Variablen aufrufen:
set @Res = (SELECT * FROM @DimTable WHERE @DimSpalte = @Field)
Dies funktioniert leider nicht, weil er bei @DimTable eine
Tabellenvariable erwartet.



Tabellennamen können nicht aus einer Variable gesetzt werden,
dazu benötigst Du dynamisches SQL.

Aber Dir sollte klar sein, das obige Anweisung ohnehin, fehlerhaft und ineffizient ist.
Denn "*" liefert alle Spalten, der Tabelle, wobei eine Variable nur einen Wert aufnehmen
kann. Liefert die Bedingung mehrere Zeilen, so wird ein unnötig grosses Resultset erzeugt.

Lies Dir mal durch:
http://www.insidesql.de/beitraege/d...segen.html

und überlege ob das Konzept für Dich wirklich sinnvoll ist.

Gruss
Elmar

Ähnliche fragen