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
.