Język zapytań SQL Oracle

13/07/2008

Instrukcja, pętla FOR-LOOP i WHILE-LOOP w PL/SQL-u

Tą instrukcję używamy jeżeli chcemy wykonywać jakieś polecenia w pętli do czasu aż warunek z pętli nie będzie  spełniony.
Przykład poniżej:

BEGIN
FOR moje_liczby IN 30 … 40 LOOP
DBMS_OUTPUT.PUT_LINE(’Liczba: ‘ || to_char(moje_liczby));
END LOOP;
END;
/

ten programik będzie wyświetlał liczby od 30 do 40 czyli 30,31,32, 33, 34 … 40

Inna pętlę możemy zrobić za pomocą pętli WHILE-LOOP różni się od tej poprzedniej że tutaj wstawiamy warunek zaraz po  WHILE, zastosuję tą pętlę dla analogicznego przykładu jak powyżej:

DECLARE
nr NUMBER := 30;

BEGIN
WHILE nr<=40 LOOP
DBMS_OUTPUT.PUT_LINE(’Liczba: ‘ || to_char(nr));
nr:=nr+1;
END LOOP;
END;
/

Różnica podstawowa jest kata, że w pierwszym przypadku nie musieliśmy deklarować zmiennych ani stałych, natomiast w  drugim wykorzystujemy zmienną nr

Instrukcja warunkowa CASE

Instrukcję CASE możemy stosować zamiast IF-THEN_ELSIF w niektórych przypadkach, jest ona bardziej czytelna i podobno  bardziej wydajna. Ja w swojej praktyce instrukcję CASE stosowałem w przypadku tworzenia menu. Poniżej zademonstruję  przykład żeby lepiej wytłumaczyć tą instrukcję.

DECLARE
litera CHAR(1);
BEGIN
litera := ‘A’;

CASE litera
WHEN ‘P’ THEN DBMS_OUTPUT.PUT_LINE(’Litera P jest w wyrazie PIES’);
WHEN ‘I’ THEN DBMS_OUTPUT.PUT_LINE(’Litera P jest w wyrazie PIES’);
WHEN ‘E’ THEN DBMS_OUTPUT.PUT_LINE(’Litera P jest w wyrazie PIES’);
WHEN ‘S’ THEN DBMS_OUTPUT.PUT_LINE(’Litera P jest w wyrazie PIES’);
ELSE DBMS_OUTPUT.PUT_LINE(’Litery: ‘ || litera ||’nie ma w wyrazie PIES’);
END CASE;
END;
/

Ten programik sprawdza czy podana przez nas litera jest w wyrazie PIES, jeżeli tak to daje na odpowiedni komunikat,  jeżeli nie to informuje nas o tym że nie ma tej litery w wyrazie PIES.

Instrukcja warunkowe IF-THEN-ELSEIF

Ta instrukcja jest podobna do IF_THEN ale daje możliwość wykonania także jakiegoś zadania w przypadku gdy warunek nie  jest spełniony lub chcemy dodać jakiś dodatkowy warunek, poniżej pokaże przykłada na podstawie którego  wszystko będzie jasne, żeby było łatwiej zrozumieć wykorzystam ten sam przykład co w poprzednim zadaniu, dodając do  tego zestawienia także informacje o osobach które osiągnęły wiek emerytalny a także niepełnoletnich.

DECLARE
imie1 VARCHAR2(23);
nazwisko1 VARCHAR2(23);
jaki VARCHAR2(10);
lata NUMBER(3);
BEGIN
select wiek, imie, nazwisko into lata,imie1,nazwisko1 FROM pracownik;

IF lata > 17 and lata =<64 THEN
jaki:=’DOROSŁY’;
DBMS_OUTPUT.PUT_LINE( ‘Pracownik: ‘ || imie1 ||’,'|| nazwisko ||’ jest już: ‘ || jaki);

ELSEIF lata>64
jaki:=’EMERYT’;
DBMS_OUTPUT.PUT_LINE( ‘Pracownik: ‘ || imie1 ||’,'|| nazwisko ||’ jest już: ‘ || jaki);

ELSE
jaki:=’JESZCZE NIE DOROSŁY’;
DBMS_OUTPUT.PUT_LINE( ‘Pracownik: ‘ || imie1 ||’,'|| nazwisko ||’ jest już: ‘ || jaki);

END IF;
END;
/

Dzięki tej instrukcji obsłużyliśmy 3 przypadki DOROSŁY, EMERYT, JESZCZE NIE DOROSŁY. Ten warunek jest bardziej  rozbudowany i umożliwia na sprawdzenie kliku warunków i dla każdego wykonać jakieś zadanie.

12/07/2008

Instrukcja warunkowe IF-THEN

Tak jak pisałem wcześniej instrukcje IF-THEN to instrukcje które na początku sprawdzają czy warunek jest prawdziwy, jeżeli tak to wtedy wykonywane są kolejne polecenia, jeżeli nie to wtedy wykonywane są polecenia które są po ELSEIF jeżeli jest to warunek typu IF-THEN-ELSEIF a jeżeli nie to polecenia w instrukcji są pomijane.

teraz pokaże prosty przykład instrukcji IF-THEN

DECLARE
imie1 VARCHAR2(23);
nazwisko1 VARCHAR2(23);
jaki VARCHAR2(10);
lata NUMBER(3);
BEGIN
select wiek, imie, nazwisko into lata,imie1,nazwisko1 FROM pracownik;

IF lata > 17 THEN
jaki:=’DOROSŁY’;

DBMS_OUTPUT.PUT_LINE( ‘Pracownik: ‘ || imie1 ||’,'|| nazwisko ||’ jest już: ‘ || jaki);
END IF;
END;
/

ten programik pokaże imię i nazwisko wszystkich dorosłych pracowników, myślę że kod jest na tyle prosty że nie wymaga tłumaczenia.

zasilane przez WordPress