[T-SQL/MS SQL] Ustawianie wartości zmiennej w select


(Pit17x) #1

Witajcie wszyscy,

mam problem. Posiadam zmienną dajmy na to @test. Chciałbym jej przypisać wartość wewnątrz instrukcji SELECT, która to pobiera dane z bazy. Dodatkowo wewnątrz tej instrukcji ma znajdować się warunek do sprawdzenia:

declare @test int;

set @test = 0;

SELECT D.dana1, D.dana2, D.dana3

if D.dana1 <10

begin

set @test = 10;

end

FROM Dane D

Próbowałem już z case when then, ale niestety wewnątrz niego nie mogłem ustawić wartości zmiennej poprzez SET. Generalnie ciągle wywala mi błąd składni.

Chodzi mi o analogiczne działania do działań wykonywanych w SQR, gdzie istnieje możliwość wstawiania wyrażeń warunkowych w instrukcji select.


(Somekindsoftware) #2

Obawiam się, że nie można łączyć SELECT pobierającego dane z tabeli z takim, który ustawia wartość zmiennej.


([alex]) #3

A właśnie że można:

SELECT D.dana1, D.dana2, D.dana3, @test:=if(D.dana1<10,10,@test) FROM Dane D;

Owszem nie możesz użyć set albo tamtą formę if, ale funkcje if oraz operator := można.


(Somekindsoftware) #4

To chyba nie w tym języku.


([alex]) #5

To jest SQL jako taki wg standardów. Działa pod MySQL, Oracle, Informix właściwie można było się spodziewać że M$ kolejny raz ma wszystkie standardy tam gdzie słońce nie dochodzi.


(Somekindsoftware) #6

Ciekawa teoria, co nie zmienia faktu, że pytanie autora wątku jest jasne i precyzyjne oraz dotyczy konkretnego języka, więc Twoja odpowiedź jest nie na temat.


(Marcin Miga) #7

A po co coś takiego chcesz robić? Chyba popełniasz jakiś błąd logiczny. W końcu po wyjściu z SELECT zmienna będzie miała wartość taką, jak ostatni rekord. A chyba nie o to ci chodzi. Napisz, co chcesz osiągnąć - być może musisz użyć CURSORów.

pozdrawiaMM