SET SERVEROUTPUT ON
/* Értékadás CASE feltétellel. */
DECLARE
datum DATE := DATE '1983-05-29';
evszak VARCHAR2(6);
BEGIN
evszak :=
CASE
WHEN TO_CHAR(datum, 'MM') IN ('01', '02', '12') THEN 'tel'
WHEN TO_CHAR(datum, 'MM') IN ('03', '04', '05') THEN 'tavasz'
WHEN TO_CHAR(datum, 'MM') IN ('06', '07', '08') THEN 'nyar'
WHEN TO_CHAR(datum, 'MM') IN ('09', '10', '11') THEN 'osz'
ELSE 'Hiba'
END;
DBMS_OUTPUT.PUT_LINE (evszak);
END;
/* Példa az IF-THEN-ELSE feltétel használatára. */
DECLARE
szam NUMBER := -5;
absz NUMBER;
BEGIN
IF szam >= 0 THEN absz := szam;
ELSE absz:= -1 * szam;
DBMS_OUTPUT.PUT_LINE (szam || ' abszolút értéke: '|| absz);
END IF;
END;
/* Példa a CASE feltétel használatára. */
DECLARE
osztalyzat NUMBER(1) := 4;
BEGIN
CASE osztalyzat
WHEN 1 THEN DBMS_OUTPUT.PUT_LINE('elégtelen');
WHEN 2 THEN DBMS_OUTPUT.PUT_LINE('elégséges');
WHEN 3 THEN DBMS_OUTPUT.PUT_LINE('közepes');
WHEN 4 THEN DBMS_OUTPUT.PUT_LINE('jó');
WHEN 5 THEN DBMS_OUTPUT.PUT_LINE('jeles');
ELSE DBMS_OUTPUT.PUT_LINE('Nincs ilyen jegy.');
END CASE;
END;
/* Példa egyszerű LOOP szerkezetre. */
DECLARE
fakt NUMBER:=1;
i PLS_INTEGER:=2;
BEGIN
LOOP
fakt:=fakt*i;
EXIT WHEN fakt > 1000;
i:=i+1;
END LOOP;
DBMS_OUTPUT.PUT_LINE('A faktorialis: ' || fakt);
END;
/* Példa WHILE ciklusra. */
DECLARE
ossz NUMBER :=1;
BEGIN
WHILE ossz < 10000 LOOP
ossz := 2*ossz;
END LOOP;
DBMS_OUTPUT.PUT_LINE (ossz);
END;
/* Példa FOR ciklusra. */
DECLARE
ossz NUMBER := 0;
BEGIN
FOR i in 1..100 LOOP
ossz := ossz + i;
END LOOP;
DBMS_OUTPUT.PUT_LINE('Az első száz szám összege: ' || ossz);
END;
/* SELECT INTO utasítás I. */
DECLARE
reszl_varos reszleg.varos%TYPE;
BEGIN
SELECT varos
INTO reszl_varos
FROM reszleg
WHERE azon = 'B01';
DBMS_OUTPUT.PUT_LINE('A varos: ' || reszl_varos);
END;
/* SELECT INTO utasítás II. */
DECLARE
sor reszleg%ROWTYPE;
BEGIN
SELECT *
INTO sor
FROM reszleg
WHERE azon = 'B01';
END;