T-SQL IF – Instrukcja warunkowa If Then Else w Transact-SQL


Czym jest instrukcja warunkowa IF i jak jej używać w Transact-SQL?

Jeśli uczysz się programowanie, zapewne samej instrukcji IF w Transact-SQL nie muszę Ci przedstawiać. Wstęp jednak tego wymaga. Transact-SQL IF THEN ELSE to typowa instrukcja warunkowa. Wykonuje blok kodu, jeśli warunek ujęty przed blokiem jest spełniony. Jeśli nie jest spełniony mamy do dyspozycji opcjonalny warunek ELSE. Instrukcję IF THEN ELSE w SQL Server możemy używać w T-SQL m. in. w blokach anonimowych, procedurach, funkcjach, triggerach. Składnia T-SQL  If Then Else wygląda następująco:

Bloki ELSE IF i ELSE są opcjonalne i nie musimy ich uzupełniać. Instrukcje T-SQL IF możemy także zagnieżdżać tworząc kilka takich instrukcji wewnątrz siebie, o czym piszę w kolejnych punktach.

 

Przykłady wykorzystania T-SQL IF THEN ELSE

Poniżej prosty przykład z wykorzystanie instrukcji IF w Transact-SQL. Tworzymy zmienną liczbową i przypisujemy do niej losową liczbę od 1 do 100 za pomocą funkcji ROUND i RAND. Następnie dla tej właśnie liczby wyświetlamy komunikat za pomocą polecenia PRINT informujący nas, czy liczba znajduje się w zakresie od 0 do 50, czy od 51 do 100.

Kurs SQL Server - IF T-SQL

Kurs SQL Server – IF T-SQL

W składni instrukcji Transact-SQL IF ELSE możesz użyć także bloku kodu BEGINEND. Tą samą instrukcję możemy zapisać także w ten sposób:

 

Instrukcja IF ELSE W Transact- SQL. Zagnieżdżona instrukcja IF w Transact-SQL

Rozbudujmy poprzedni przykład. Chcemy, by instrukcja T-SQL IF mogła wskazywać 3 różne wyniki dla zakresów 0-33, 34-66 i 67-100. W jaki sposób to zrobić? Jedyne, co powinieneś zrobić to dodać instrukcję T-SQL ELSE IF z dodatkowym warunkiem. Możliwe jest także dodanie zagnieżdżonej instrukcję IF w bloku IF lub w bloku ELSE.

Kurs SQL Server - ELSE IF Transact-SQL

Kurs SQL Server – ELSE IF Transact-SQL

 

Kasowanie obiektów bazodanowych za pomocą instrukcji IF w T-SQL

Za pomocą instrukcji IF T-SQL możesz także sprawdzić, czy dany obiekt jak tabela, widok, funkcja, czy procedura występuję w Twojej bazie danych i w razie występowania np go skasować. W niektórych językach SQL np w Oracle występuje polecenie tworzenia obiektów z opcjonalnym kasowaniem istniejącego obiektu o tej samej nazwie. Piszemy wtedy polecenie CREATE OR REPLACE. SQL Server w każdej wersji nie posiada takich funkcjonalności. Możesz natomiast wykonać dokładnie tak samo działanie kasując obiekt, jeśli obiekt o tej nazwie istnieje. By sprawdzić, czy dany obiekt istnieje w bazie i ewentualnie go skasować stosujemy poniżej zapisaną składnię z użyciem T-SQL IF.

Jak widzisz, w poleceniu wykorzystujemy funkcję OBJECT_ID, w której w pierwszym argumencie wprowadzamy nazwę obiektu, a więc np nazwę tabeli, procedury, widoku, funkcji, bazy danych itp. W drugim argumencie wprowadzamy element, którego występowanie w bazie sprawdzamy, a więc:

  • table dla tabel
  • view dla widoków
  • procedure dla procedur
  • function dla funkcji
  • database dla baz danych

W instrukcji wykonywanej, gdy warunek jest spełniony kasujemy obiekt poleceniem DROP, a więc np:

  • DROP TABLE
  • DROP VIEW
  • DROP PROCEDURE
  • DROP FUNCTION
  • DROP DATABASE

Poniżej przykład kasujący tabelę o nazwie tbTest. Zaraz za poleceniem kasowania tabeli możemy utworzyć tabelę o dokładnie tej samej nazwie.

Kurs SQL Server - IF Transact-SQL. Kasowanie tabeli, jeśli istnieje.

Kurs SQL Server – IF Transact-SQL. Kasowanie tabeli, jeśli istnieje.

Dodaj komentarz

Twój adres email nie zostanie opublikowany.