[MSSQL] Jak pobrać wartość pola, gdzie nazwa pola jest zmien

Odpowiedz Nowy wątek
2008-09-02 17:05
0

OK, mam funkcję skalarną, która ma zwracać mi określone wartości.

W uproszczeniu wygląda to tak, że w parametrze przekazuję jakies tam ID i nazwę pola, którego wartość chcę uzyskać.

Ciało wygląda mniej więcej tak(w dużym uproszczeniu):

SELECT @res = @colName FROM tabela WHERE id = @id
RETURN @res

Problem polega na tym, że zamiast wartości otrzymuję nazwę pola. Jak zrobić, żeby serwer potraktował zmienną @colName jako nazwę pola?

Tzn. chcę, żeby serwer "widział" coś takiego:

SELECT @res = pole FROM tabela WHERE [email protected]
RETURN @res

Pozostało 580 znaków

2008-09-02 17:44
0
declare @colname varchar(25)
set @colname = 'COL1'

exec ('SELECT col3, col4, (SELECT ' + @colname + ' from TABLE1 where cond) from TABLE2 WHERE cond')

Pozostało 580 znaków

2008-09-03 15:31
0

Dostaję komunikat błędu:

Invalid use of side-effecting or time-dependent operator in 'EXECUTE STRING' within a function.

Pozostało 580 znaków

2008-09-11 00:45
crowa(niezalogowany)
0
DECLARE @SQL VARCHAR(8000)
SET @SQL = 
  'DECLARE @RES VARCHAR(50) ' + CHAR(13) + CHAR(10) +  -- zmienna res jest takiego samego typu co colName
  'SELECT @RES = ' + @colName + ' FROM tabela WHERE id = ' + CAST(@id AS VARCHAR)

EXEC(@SQL)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0