PL/SQL

Úr Wikipediu, frjálsa alfræðiritinu
Stökkva á: flakk, leita

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.