SET SERVEROUTPUT ON

/* 1. példa */

DECLARE
        a      NUMBER NOT NULL:=1-- NOT NULL változót mindig inicializálni kell.
        b      NUMBER;
BEGIN
        a := b;
EXCEPTION
        WHEN VALUE_ERROR THEN
                DBMS_OUTPUT.PUT_LINE ('Hoppa!!');
END;

/* 2. példa */

DECLARE
        sor                            tranzakcio%ROWTYPE;
        hibas_datum            EXCEPTION;
        
        CURSOR cur_ugyfel (dat tranzakcio.datum%TYPE DEFAULT SYSDATE)
        RETURN tranzakcio%ROWTYPE IS
                SELECT DISTINCT *
                FROM tranzakcio
                WHERE dat = datum;

BEGIN
        OPEN cur_ugyfel(DATE '2007-04-27');
        FETCH cur_ugyfel INTO sor;
        IF cur_ugyfel%NOTFOUND THEN RAISE hibas_datum;
        END IF;
        DBMS_OUTPUT.PUT_LINE('Helyes datumot adtunk meg.');
EXCEPTION
        WHEN hibas_datum THEN
                DBMS_OUTPUT.PUT_LINE('Helytelen datumot adtunk meg.');
        WHEN OTHERS THEN
                 DBMS_OUTPUT.PUT_LINE('Hat ez meg mi??');
END;

-- Érdemes kipróbálni a programot DATE '2007-04-21' és '2007-04-21' értékekkel is.

/* 3. példa */

DECLARE
        v_ugyf_nev             ugyfel.nev%TYPE := 'Rumcajsz';
        hibas_ugyf_nev EXCEPTION;
        FUNCTION nev_azon_kereso (name ugyfel.nev%TYPE)
                RETURN ugyfel.azon%TYPE IS
        id             ugyfel.azon%TYPE;
        BEGIN
                SELECT azon
                INTO id
                FROM ugyfel
                WHERE LOWER(nev) = LOWER(name);
                RETURN id;
        EXCEPTION
                WHEN NO_DATA_FOUND OR TOO_MANY_ROWS THEN
                        RAISE_APPLICATION_ERROR(-20001,
                                'A keresett ugyfel nincs az adatbazisban vagy nem egyertelmu, hogy ki az.');
        END nev_azon_kereso;
        PRAGMA EXCEPTION_INIT(hibas_ugyf_nev, -20001);

BEGIN
        DBMS_OUTPUT. PUT_LINE ('A ' || v_ugyf_nev || ' nevu ugyfel azonositoja: ' || nev_azon_kereso(v_ugyf_nev));
EXCEPTION
        WHEN hibas_ugyf_nev THEN
                 DBMS_OUTPUT. PUT_LINE('Hiba: ' || SQLCODE || ', ' || SQLERRM);
END;