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?
Najnowsze komentarze