
Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:кожин / CREATE_PROCEDURE_TRIGGER
.txt create or replace procedure vvod_vydacha
(Ninv in integer,Nchit in integer, d in date, c in integer) as
x number(9);
y number (8);
begin
select nomer into x from chitatel where nomer=Nchit;
if sql%notfound then
raise_application_error (-20111,'отсутствует читатель');
end if;
select inv_nomer into y from ekzemp where inv_nomer=Ninv;
if sql%notfound then
raise_application_error (-20111,'отсутствует экземпляр книги');
end if;
insert into vadacha (nomer,ekz,vadano,crok) values (x,y,d,c);
end;
create or replace procedure vozvr_vydacha
(Ninv in integer,Nchit in integer) as
x number(9);
y number (8);
d date;
r rowid;
begin
select rowid into r from vadacha where nomer=Nchit and ekz=Ninv;
if sql%notfound then
raise_application_error (-20111,'отсутствует читатель');
end if;
d=sysdate()
update vadacha set vozvr = d where rowid=r;
end;
create or replace trigger tr_avtory before insert on avtory
for each row
declare
i number(6);
ex exception;
pragma exception_init (ex,-20010);
begin
select count(kod_avtora) into i from avtory
where kod_avtora=:new.kod_avtora;
if (i>0) then
raise ex;
end if;
select n_avtor.nextval into :new.kod_avtora from dual ;
exception
when ex then
raise_application_error(-20000,' автор существует');
end;
/
create or replace trigger tr_chitatel_insert before insert on chitatel for each row
declare
i number(6);
ex exception;
pragma exception_init (ex,-20010);
begin
select count(nomer) into i from chitatel where fam=:new.fam;
if (i>0) then
raise ex;
end if;
select n_chit.nextval into :new.nomer from dual ;
exception
when ex then
raise_application_error(-20010,' читатель существует');
end;
/
create or replace trigger tr_chitatel_delete before delete on chitatel for each row
declare
i number(6);
ex exception;
pragma exception_init (ex,-20011);
begin
select count(nomer) into i from vadacha where nomer=:old.nomer
and vozvr is null;
if (i>0) then
raise ex;
end if;
exception
when ex then
raise_application_error(-20011,' читатель имеет книги');
end;
/
create or replace procedure vvod_knig
(nazv in varchar2,
tom_1 in number,
bid_1 in number,
jazyk_1 in varchar2,
povtor_1 in number,
izdatelstvo_1 in varchar2,
god_vypuska_1 in varchar2,
data_priobr_1 in varchar2,
zena_1 in number,
kolvo in number,
kod out number
) is
i number(6);
j number;
begin
select n_izd.nextval into kod from dual;
insert into izdanie (nazvanie,tom, bid, jazyk,povtor,izdatelstvo,god_vypuska , kod_izdanija)
values (nazv,tom_1, bid_1, jazyk_1,povtor_1,izdatelstvo_1,
to_date(god_vypuska_1,'dd-mm-yyyy'), kod);
for j in 1..kolvo loop
select inv_nom.nextval into i from dual;
insert into ekzemp (inv_nomer , data_priobr, zena)
values (i,to_date(data_priobr_1,'dd-mm-yyyy'), zena_1);
insert into prinadl (izdan, inv_n ) values (kod,i);
end loop;
end;
/
(Ninv in integer,Nchit in integer, d in date, c in integer) as
x number(9);
y number (8);
begin
select nomer into x from chitatel where nomer=Nchit;
if sql%notfound then
raise_application_error (-20111,'отсутствует читатель');
end if;
select inv_nomer into y from ekzemp where inv_nomer=Ninv;
if sql%notfound then
raise_application_error (-20111,'отсутствует экземпляр книги');
end if;
insert into vadacha (nomer,ekz,vadano,crok) values (x,y,d,c);
end;
create or replace procedure vozvr_vydacha
(Ninv in integer,Nchit in integer) as
x number(9);
y number (8);
d date;
r rowid;
begin
select rowid into r from vadacha where nomer=Nchit and ekz=Ninv;
if sql%notfound then
raise_application_error (-20111,'отсутствует читатель');
end if;
d=sysdate()
update vadacha set vozvr = d where rowid=r;
end;
create or replace trigger tr_avtory before insert on avtory
for each row
declare
i number(6);
ex exception;
pragma exception_init (ex,-20010);
begin
select count(kod_avtora) into i from avtory
where kod_avtora=:new.kod_avtora;
if (i>0) then
raise ex;
end if;
select n_avtor.nextval into :new.kod_avtora from dual ;
exception
when ex then
raise_application_error(-20000,' автор существует');
end;
/
create or replace trigger tr_chitatel_insert before insert on chitatel for each row
declare
i number(6);
ex exception;
pragma exception_init (ex,-20010);
begin
select count(nomer) into i from chitatel where fam=:new.fam;
if (i>0) then
raise ex;
end if;
select n_chit.nextval into :new.nomer from dual ;
exception
when ex then
raise_application_error(-20010,' читатель существует');
end;
/
create or replace trigger tr_chitatel_delete before delete on chitatel for each row
declare
i number(6);
ex exception;
pragma exception_init (ex,-20011);
begin
select count(nomer) into i from vadacha where nomer=:old.nomer
and vozvr is null;
if (i>0) then
raise ex;
end if;
exception
when ex then
raise_application_error(-20011,' читатель имеет книги');
end;
/
create or replace procedure vvod_knig
(nazv in varchar2,
tom_1 in number,
bid_1 in number,
jazyk_1 in varchar2,
povtor_1 in number,
izdatelstvo_1 in varchar2,
god_vypuska_1 in varchar2,
data_priobr_1 in varchar2,
zena_1 in number,
kolvo in number,
kod out number
) is
i number(6);
j number;
begin
select n_izd.nextval into kod from dual;
insert into izdanie (nazvanie,tom, bid, jazyk,povtor,izdatelstvo,god_vypuska , kod_izdanija)
values (nazv,tom_1, bid_1, jazyk_1,povtor_1,izdatelstvo_1,
to_date(god_vypuska_1,'dd-mm-yyyy'), kod);
for j in 1..kolvo loop
select inv_nom.nextval into i from dual;
insert into ekzemp (inv_nomer , data_priobr, zena)
values (i,to_date(data_priobr_1,'dd-mm-yyyy'), zena_1);
insert into prinadl (izdan, inv_n ) values (kod,i);
end loop;
end;
/
Соседние файлы в папке кожин