PL/SQL v příkladech / Anonymní blok a větvení
Anonymní blok
Program v jazyce PL/SQL se skládá z anonymních a pojmenovaných bloků. Anonymní slouží převážně k oddělení logických částí programu a pro řízení zpracování výjimek.
DECLARE -- nepovinná oblast pro deklaraci proměnných -- jednořádkový komentář /* víceřádkový komentář */ BEGIN -- povinná výkonová sekce EXCEPTION -- nepovinná oblast pro zpracování výjimek END;
Následující příklad demonstruje jednoduché zadeklarování číselné proměnné, přirazení hodnoty, operaci dělení a odchycení obecné výjimky s výpisem na konzoli. Za povšimnutí stojí především deklarace, kde datový typ stojí až za názvem proměnné a přiřazení hodnoty pomocí :=.
DECLARE
a NUMBER;
BEGIN
a:=10;
a:=a/0; -- nelze použít zápis a/=0;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Dělení nulou!');
END;
Jednotlivé bloky do sebe lze zanořovat. Proměnné se stejným názvem mají platnost jen ve svém bloku.
DECLARE
a NUMBER:=1; -- zápis výchozí hodnoty rovnou v deklarativní části
BEGIN
DECLARE
a NUMBER:=2;
b NUMBER:=3;
BEGIN
dbms_output.put_line(a); -- 2
dbms_output.put_line(b); -- 3
END;
dbms_output.put_line(a); -- 1
-- proměnná b v tomto bloku neexistuje
END;
Větvení
Řízení toku programu je v PL/SQL realizováno pomocí standardní konstrukce IF THEN ELSE. Jako operátor porovnání se používá =.
DECLARE
a BOOLEAN:=FALSE; -- logický datový typ
BEGIN
IF (a=TRUE) THEN -- možno zapsat jako IF (a)
dbms_output.put_line('true');
ELSIF (a=FALSE) THEN -- možno zapsat jako ELSIF (NOT a)
dbms_output.put_line('false');
ELSE
dbms_output.put_line('null'); -- pozor, BOOLEAN může být NULL
END IF;
END;
Možné je samozřejmě také použití příkazu CASE.
DECLARE
a BOOLEAN;
BEGIN
CASE a
WHEN TRUE THEN
dbms_output.put_line('true');
WHEN FALSE THEN
dbms_output.put_line('false');
ELSE -- není splněna ani jedna podmínka
dbms_output.put_line('null');
END CASE;
END;