私はSQLでライブラリ管理システムを実装しています。 I次の表の構造とその中に挿入されたいくつかの値を持っている:なし未返却図書を持っていない私が今欲しい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');
は私のDBは、ユーザーのために、「借入」の本を許可するということである(すなわち借り表に挿入) (返された日付はnullではありません)、書籍が返却されていない場合は、すべての処理を中止します。私は次のようにこれを実装するために考えた:
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。 。 。それは "タイプミス"と呼ばれています。 –