Я реализую систему управления библиотекой в SQL. У меня есть следующие структуры таблицы и некоторые значения вставляются в них:SQL: Хранимая процедура
create table books
(
IdBook number(5),
NameBook varchar2(35),
primary key(IdBook)
);
create table users
(
IdUsers number(5),
NameUser varchar2(20),
primary key(IdUsers)
);
create table borrowed
(
IdBorrowed number(5),
IdUsers number(5),
IdBook number(5),
DueDate date,
DateReturned date,
constraint fk_borrowed foreign key(IdUsers) references users(IdUsers),
constraint fk_borrowed2 foreign key(IdBook) references books(IdBook)
);
insert into books values(0,'FairyTale');
insert into books values(1,'Crime and Punishment');
insert into books values(2,'Anna Karenina');
insert into books values(3,'Norwegian Wood');
insert into users values(01,'Robb Dora');
insert into users values(02,'Pop Alina');
insert into users values(03,'Grozavescu Teodor');
insert into users values(04,'Popa Alin');
insert into borrowed values(10,02,3,'22-Jan-2017',null);
insert into borrowed values(11,01,1,'25-Jan-2017','19-Dec-2016');
insert into borrowed values(12,01,3,'22-Jan-2017',null);
insert into borrowed values(13,04,2,'22-Jan-2017','13-Dec-2016');
То, что я хочу сейчас, что мой дб, чтобы «заимствования» книг для пользователей (т.е. вставить в заимствованных таблицу), которые не имеют невозвращенные книги (т. е. возвращенная дата не равна нулю), и если у них есть невозвращенные книги, я хочу отказаться от всего процесса. Я думал, что осуществить это следующим образом:
create or replace procedure borrowBook(IdBorrowed in number,IdUsers number,IdBook number,DueDate date,DateReturned date) as begin
if exists (SELECT u.IdUsers, u.NameUser, b.DateReturned
FROM users u, borrowed b
WHERE u.IDUSERS = b.IdUsers and DateReturned is not null),
insert into borrowed values(IdBorrowed,IdUsers,IdBook,DueDate,DateReturned);
end borrowBook;
выше процедура не проверяет, если параметр Перехожу к этой функции такой же, как тот, в мой выбор, и я не знаю, как это сделать и правильно вставьте значение в мою таблицу.
Любая помощь будет высоко оценена. Заранее спасибо!
Если я пытаюсь запустить это, я получаю следующие ошибки: Ошибка (10,5): PL/SQL: заявление SQL игнорируется Ошибка (12,49): PL/SQL: ORA-00904: «IN_IDUSER»: недействительный идентификатор Ошибка (20,9): PL/SQL: заявление SQL игнорируется Ошибка (21,70): PL/SQL: ORA-00984: здесь не разрешена колонка – didi
@didi. , , Это называется «опечаткой». –