filippg
Goto Top

SQL - Variable als Spaltenname?

Hallo,

ich habe ein einem MSSQL 2005 eine Tabelle mit etlichen Spalten. Nun habe ich eine Funktion, die eine bestimmte Zeile auswählt, und von dieser den Wert einer Spalte zurückliefern soll. Der Spaltennamen wird der Funktion in einer Variable übergeben.
Ich hatte mir das so vorgestellt:
SET @943 = (SELECT @spaltenname FROM Tabelle where <Bedingungen zur Zeilenauswahl>)

Leider führt das dazu, dass nachher @943 den Wert aus @spaltenname hat (also "Spalte1" etwa), und nicht den Wert der Spalte.
Wie kann ich das ändern? Wäre für schnelle Hilfe dankbar!

Gruß

Filipp

Content-ID: 94856

Url: https://administrator.de/contentid/94856

Ausgedruckt am: 21.11.2024 um 22:11 Uhr

SlainteMhath
SlainteMhath 20.08.2008 um 11:25:59 Uhr
Goto Top
Hi,

versuchs mal so

exec 'SET @Wert=(SELECT [' + @spaltenname + '] FROM tabelle WHERE ...)'  

lg,
Slainte
filippg
filippg 20.08.2008 um 16:03:24 Uhr
Goto Top
Hallo,

ein solches Konstrukt habe ich schon ausprobiert, das will er nicht. Könnte von der Fehlermeldung her daran liegen, dass es eine gespeicherte Funktion ist.

Momentan habe ich es über ein CASE gelöst:
SELECT CASE @spaltenname WHEN 'abc' THEN abc WHEN 'bcd' THEN bcd END FROM...
Nicht wirklich elegant. Aber er kann zur Speicherzeit prüfen, ob die Spalten wirklich existieren.

Gruß

Filipp