PL/SQL

PL/SQL er forritunarmál sem er fylgir Oracle gagnagrunnum. PL/SQL er það forritunarmál sem er notað í gagngrunns triggerum, og stefjum sem vistaðar eru í gagnagrunninum. Reyndar er líka hægt að vista Java forrit í grunninum í sama tilgangi, en PL/SQL er það sem er oftast notað.

Einnig er hægt að keyra PL/SQL forrit án þess að vista þau sem stefjur eða föll í grunninum. Slík forrit eru kölluð ónefndar (e.Anonymous) blokkir til aðgreiningar frá einingum sem eru vistuð undir nafni í grunninum sem fall, stefja, pakki eða trigger.

Einföld PL/SQL blokk:
declare
  dagur date;
BEGIN
  dagur := trunc(sysdate);
END;

Hér er skilgreind breyta af gerðinni date, og síðan byrjar blokk sem sækir daginn í dag (sysdate), sleppir tíma partinum (trunc) og setur niðurstöðuna í breytuna sem var skilgreind.

Annað dæmi. Stundum þarf að setja takmarkanir á hvað leyfilegt er að gera við gögn, og hvernig gögn er leyfilegt að vista. Ef taflan Skraning er svona:
Create table skraning (
  kennitala varchar(10) not null,
  nafn varchar(100) not null,
  dags_skraningar date not null
);

Þá er hægt að tryggja að ekki séu sett gildi inn í töfluna sem eru fram í tímann og ekki eldri en eins mánaða með því að skrifa trigger í PL/SQL:
create or replace trigger skraning_bfins
before insert on skraning for each row
begin 
    if :new.dags_skraningar > sysdate 
    then
        raise_application_error(20001,'Skráningardagur má ekki vera fram í tímann!');
    elsif sysdate - :new.dags_skraningar > 30
    then
        raise_application_error(20001,'Skráningardagur má ekki vera eldri en 30 daga');
  end if;
end;
/
Þessi trigger setur takmarkanir á uppfærslur og innlestur á töfluna sjálfa þannig að það komast ekki inn færslur nema þær sem eru leyfilegar.