„PL/SQL“: Munur á milli breytinga
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.