Przychodzi taki moment podczas programowania baz danych, że nie da się, po prostu się nie da napisać zapytania. Trzeba stworzyć dwa różne zapytania. Przychodzi nam wtedy z pomocą instrukcja warunkowa.

Jak zatem sterować przebiegiem? Wystarczy skorzystać z instrukcji warunkowej IF:

IF warunek
BEGIN
Instrukcje
END

W tym przypadku instrukcje zostaną wykonane tylko wtedy, gdy warunek będzie spełniony.

Zadziała to tak:
krok 1: sprawdzamy, czy warunek jest spełniony,
krok 2a: jeśli warunek spełniony idziemy do BEGIN,
krok 3a: zostają wykonane instrukcje,
krok 4a: przechodzimy do END, słowa kończącego blok instrukcji,
krok 2b: jeśli warunek jest niespełniony przechodzimy do END, czyli słowa kończącego blok instrukcji.

Mamy również możliwość wykonania instrukcji w zależności od tego, czy warunek jest spełniony, czy też nie:

IF warunek
BEGIN
Instrukcje jeśli warunek spełniony
END
ELSE
BEGIN
Instrukcje jeśli warunek niespełniony
END

Teraz krok po kroku jak to zadziała:

krok 1: sprawdzamy, czy warunek jest spełniony,
krok 2a: jeśli warunek spełniony zostaje wykonany pierwszy blok instrukcji,
krok 3a: przechodzimy do END, słowa kończącego blok instrukcji,
krok 4a: przechodzimy do drugiego END, słowa kończącego drugi blok instrukcji,
krok 2b: jeśli warunek niespełniony przechodzimy do ELSE,
krok 3b: wykonujemy drugi blok instrukcji,
krok 4b: przechodzimy do END, słowa kończącego drugi blok instrukcji.

Teraz przykład, który zademonstruje działanie:

IF 2=2
BEGIN
SELECT 'Warunek spełniony'
END
ELSE
BEGIN
SELECT 'Warunek niespełniony'
END

Teraz dokładnie to samo wywołanie, ale dla niespełnionego warunku:

IF 2=3
BEGIN
SELECT 'Warunek spełniony'
END
ELSE
BEGIN
SELECT 'Warunek niespełniony'
END

W ten sposób możemy sterować przebiegiem naszego skryptu. Najważniejsze jest jednak to, czy w danym przypadku faktycznie potrzebna jest instrukcja warunkowa? Może wystarczy zmienić np. to, co podaliśmy w klauzuli WHERE, aby uzyskać taki sam efekt?

Dołącz do newslettera już dziś!
Zero spamu - tylko wartościowe treści!
Musisz już lecieć?
Zostaw swój adres e-mail i dołącz do BEZPŁATNYCH WEBINARÓW dotyczących SQLa!
  • „Jak uczyć się SQLa?” – 4 października
  • „SQL dla testerów” – 12 października