Mam trochę kodu T-SQL używając wielu instrukcji if (około 100) jak poniżej. Jeśli warunek pierwszej instrukcji IF ma wartość TRUE, nadal analizuje pozostałe 99 instrukcji.Wyrażenie CASE SQL - Ustawianie wartości zmiennych lokalnych
IF(@check = 'abc') SET @var1 = @value
IF(@check = 'def') SET @var2 = @value
IF(@check = 'ghi') SET @var3 = @value
IF(@check = 'jkl') SET @var4 = @value
IF(@check = 'mno') SET @var5 = @value
…
…
Chcę przekonwertować te, aby użyć wyrażenia CASE. na przykład
CASE @check
WHEN 'abc' THEN SET @var1 = @value
WHEN 'def' THEN SET @var2 = @value
WHEN 'ghi' THEN SET @var3 = @value
WHEN 'jkl' THEN SET @var4 = @value
WHEN 'mno' THEN SET @var5 = @value
…
…
END
Ja jednak nie jestem w stanie to zrobić, i pojawia się błąd SQL, który mówi, że nie można używać SET w wyrażeniu CASE.
Czy ktoś ma jakieś pomysły, jak mogę to osiągnąć? Dzięki!
Możesz użyć else jeśli, ale każdy z tych warunków ustawia inną zmienną. Czy na pewno poprawnie wpisałeś pytanie? –
Czy to działa "SET @ var1 = CASE WHEN ... THEN ... END"? – a1ex07
Dlaczego potrzebujesz 100 różnych zmiennych? Dlaczego nie wystarczy przypisać do zmiennej * one * na podstawie wartości '@ check'? –