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;