„PL/SQL“: Munur á milli breytinga

Efni eytt Efni bætt við
Krg~iswiki (spjall | framlög)
Ný síða: '''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. Re...
(Enginn munur)

Útgáfa síðunnar 1. ágúst 2011 kl. 02:30

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. Gerum ráð fyrir að vil eigum töfluna Skraning sem er svona.

Create table skraning (
  kennitala varchar(10) not null,
  nafn varchar(100) not null,
  dags_skraningar date not null
);

Nú viljum við tryggja að ekki séu sett gildi inn í töfluna sem eru fram í tímann og ekki eldri en eins mánaða. Það getum við gert með því að bæta við trigger á töfluna.

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;
/

Með þennan trigger að vopni er búið að setja skorður í grunninn þannig að það komast ekki inn færslur sem við skilgreinum sem ólöglegar.