西南科技大学 Oracle 数据库实验3 存储过程

1、建立存储过程完成图书管理系统中的借书功能。 功能要求:

  • 借书时要求输入借阅流水号,借书证号,图书编号。(即该存储过程有3个输入参数)
  • 借书时,借书日期为系统时间。
  • 图书的是否借出改为‘是’


create or replace procedure leyout(out_id integer,s_id varchar2,book_id varchar2) as nowdate varchar2(12);
 --tmp integer; begin select to_char(sysdate,'yyyy-mm-dd') into nowdate from dual;
 --select count(*) into tmp from 图书 where 图书.图书编号 = book_id AND 图书.是否借出 = '否';
 --if tmp<>0 then insert into 借阅(借阅流水号,借书证号,图书编号,借书日期) values(out_id,s_id,book_id,to_date(nowdate,'yyyy-mm-dd'));
 update 图书 set 图书.是否借出 = '是' where 图书.图书编号 = book_id;
 --end if;
 commit; 
end;


2、建立存储过程完成图书管理系统中的预约功能。

  • 预约时要求输入预约流水号,借书证号,ISBN。(即该存储过程有3个输入参数)
  • 存储过程先检查输入的ISBN版本的图书是否都已借出,如果是则进行预约,否则提示“该书目有可借图书,请查找”。
  • 预约时间为系统时间。


CREATE OR REPLACE PROCEDURE yuyue(yy_id integer,s_id varchar2,isbn varchar2)
AS nowdate varchar2(12);
 tmp integer;
 BEGIN
 SELECT to_char(sysdate,'yyyy-mm-dd') INTO nowdate FROM dual;
 SELECT count(*) INTO tmp FROM 图书 WHERE ISBN = isbn AND 是否借出 = '否';
 IF tmp <> 0 THEN
 INSERT INTO 预约(预约流水号,借书证号,ISBN,预约时间) VALUES(yy_id,s_id,isbn,to_date(nowdate,'yyyy-mm-dd')); 
dbms_output.put_line('成功');
 ELSE dbms_output.put_line('该书目有可借图书,请查找');
 END IF;
 COMMIT;
 END;


3、建立存储过程完成图书管理系统中的还书功能。

  • 还书时要求输入借书证号,图书编号,罚款分类号(即该存储过程有3个输入参数)。
  • 还书日期为系统时间。
  • 图书的是否借出改为‘否’。


CREATE OR REPLACE PROCEDURE backbook(s_id integer,book_id varchar2,p_id integer)
 AS nowdate varchar2(12);
--定义一个变量来储存日期
 BEGIN SELECT to_char(sysdate,'yyyy-mm-dd') INTO nowdate FROM dual;
 --获取系统时间
 UPDATE 借阅 SET 归还日期 = to_date(nowdate,'yyyy-mm-dd'),罚款分类号 = p_id WHERE 借书证号 = s_id AND 图书编号 = book_id;
 --添加归还日期
 --UPDATE 借阅 SET 罚款分类号 = p_id WHERE 借书证号 = s_id AND 图书编号 = book_id;
 --添加罚款分类 UPDATE 图书 SET 是否借出 = '否' WHERE 图书编号 = book_id;
 --修改图书状态 
COMMIT;
 END;


你可能感兴趣的:(oracle,存储过程,碳素云,借书,还书)