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-Key: 94856

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

Printed on: April 27, 2024 at 05:04 o'clock

Member: SlainteMhath
SlainteMhath Aug 20, 2008 at 09:25:59 (UTC)
Goto Top
Hi,

versuchs mal so

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

lg,
Slainte
Member: filippg
filippg Aug 20, 2008 at 14:03:24 (UTC)
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