Az Oracle objektumrelációs adatbázis-kezelő rendszer, amely alapvetően relációs eszközöket tartalmaz és ezeket egészíti ki objektumorientált eszközökkel. Mint a relációs adatbázis-kezelő rendszerek általában, az Oracle is a szabványos SQL nyelvet használja az adatok kezelésére. Az Oracle az SQL:1999 szabványt [9] támogatja. Az SQL tipikus negyedik generációs nyelv, amely deklaratív jellemzőkkel rendelkezik. Ez azt jelenti, hogy a nyelv parancsai segítségével leírjuk, hogy mit kell csinálni, de azt nem adjuk meg, hogy hogyan. A parancs végrehajtásának részletei rejtettek maradnak.
A deklaratív SQL mellett befogadó nyelvként alkalmazhatók az olyan eljárásorientált (procedurális) nyelvek, mint a C vagy a Pascal, illetve az olyan objektumorientált nyelvek, mint a C++ vagy a Java. Ezek algoritmikus nyelvek, amelyeken a probléma megoldásának menetét a programozó adja meg.
A PL/SQL a kétféle paradigma egyesítését valósítja meg, ezáltal igen nagy kifejezőerejű nyelvet ad. A PL/SQL az SQL procedurális kiterjesztésének tekinthető, amely a következő konstrukciókat adja az SQL-hez:
változók és típusok,
vezérlési szerkezet,
alprogramok és csomagok,
kurzorok,
kivételkezelés,
objektumorientált eszközök.
A PL/SQL nem tartalmaz I/O utasításokat.
Könyvünkben az Oracle10g PL/SQL verzióját tárgyaljuk. Törekedtünk a teljességre, az adott verzió minden utasítása szerepel valamelyik fejezetben. Feltételezzük az SQL utasítások ismeretét, ezért azoknak gyakran csak azon utasításrészeit elemezzük, melyek a PL/SQL-hez kötődnek, vagy az SQL-ben nem is szerepelnek. Néhány bonyolultabb PL/SQL utasításnál egyes opciók, előírások hiányozhatnak. A részletes információt igénylők számára a [19], [21] dokumentációk állnak rendelkezésre.
Minden utasítás esetén formálisan megadjuk annak szintaxisát. A formális leírásnál az alábbi jelöléseket használjuk:
A terminálisok nagybetűs formában jelennek meg (például LOOP).
A nemterminálisok dőlt kisbetűs formában szerepelnek (például típusnév). Ha a nemterminális megnevezése több szóból áll, a szavak közé aláhúzás ( _ ) kerül (például kurzorváltozó_név).
Az egyéb szimbólumok az írásképükkel jelennek meg (például :=).
Az alternatívákat függőleges vonal (|) választja el (például MAP|ORDER).
Az opcionális elemek szögletes zárójelben ([ ]) állnak (például [NOT NULL]).
A kötelezően megadandó alternatívákat kapcsos zárójelek ({ }) zárják közre (például {MAP|ORDER}).
Az iteráció jelölésére a három pont (…) szolgál (például oszlop[,oszlop]…).
A könyvben közölt kódrészletekben a jobb olvashatóság érdekében a következő jelölési
konvenciókat alkalmaztuk:
Az alapszavak és a standard, beépített PL/SQL azonosítók nagybetűsek:
.
.
.
BEGIN
v_Datum := hozzaad(SYSDATE, 1, 'kiskutyafüle');
EXCEPTION
WHEN hibas_argumentum THEN
DBMS_OUTPUT.PUT_LINE('Blokk1 - hibás argumentum: ' || SQLCODE || ', ' || SQLERRM);
END;
.
.
.
A több szóból álló azonosítókban a szavakat aláhúzással ( _ ) választjuk el.
Az adatbázisbeli táblák nevei és az oszlopaik nevei a definíciójukban nagy kezdőbetűsek, de mindenütt másutt kisbetűsek:
SELECT id, cim FROM konyv;
A programozói objektumok írására a következők vonatkoznak:
Csomagok és alprogramok nevei kisbetűsek: konyvtar_csomag.lejart_konyvek.
Formális paraméterek nevét p_ prefix után nagy kezdőbetűvel írjuk: p_Max_konyv.
A változók nevét v_ prefix után nagy kezdőbetűvel írjuk: v_Max_konyv. A rövid változók (például ciklusváltozó) nevénél ettől eltérően nem használunk prefixet: i, rv.
A nevesített konstansok nevét c_ prefix után nagy kezdőbetűvel írjuk:
c_Max_konyv_init.
A kurzorok nevét cur_ prefix után nagy kezdőbetűvel írjuk:
cur_Lejart_kolcsonzesek.
Az adatbázisban tárolt típusok nevét T_ prefix után nagy kezdőbetűvel írjuk: T_Szerzok.
Az egyéb típusok nevét t_ prefix után kis kezdőbetűvel írjuk: t_nev.
A kivételek nevét kisbetűvel írjuk (prefix nélkül): hibas_argumentum.
Az adatbázis triggereinek nevét tr_ prefix után kisbetűvel írjuk: tr_insert_kolcsonzes.