11110502实验

发布 2023-04-19 10:28:28 阅读 1210

实验5 存储过程。

学号:1111050208姓名:段吉恒班级:11计科3班。

一.实验目的。

掌握如何创建存储过程(无参数、有输入参数、有输入输出参数)

掌握如何执行存储过程(无参数、有输入参数、有输入输出参数)

掌握哪些场景需要设计存储过程。

二.实验背景。

图1 当前借阅记录。

续借管理:当前所借的书一般情况下可以续借,以延长借期。比如读者卡号为***的读者当前借了书的条码号为***的这本书,2023年6月21日应还,但该读者想再借1个月,此时可以点击“续借”按钮进行续借。

续借书时要求判断是否已过应还日期,若已过则不允许续借,再判断该读者卡是否允许续借,若允许,则判断它是否已续借,若已续借则不允许再续借。

三. 实验内容。

在红色字后粘贴**和输入你们的设计思路。

1、 将一下存储过程调试成功,并将调试成功的存储过程粘贴在后面:

create or replace procedure change_salary(p_empno in number default 206,p_raise number default 10)

as v_ename varchar2(10);

v_sal number(5);

begin

select ename,sal into v_ename,v_sal from emp where empno=p_empno;

update emp set sal=sal+p_raise where empno=p_empno;

dbms_'雇员'||v_ename||'的工资被改为'||to_char(v_sal+p_raise));

commit;

exception

when others then

dbms_'发生错误,修改失败!')

rollback;

end;调试成功,并能执行输出如下结果的存储过程创建**:

create or replace procedure change_salary(p_empno in number default 206,p_raise number

default 10)

asv_ename varchar2(10);

v_sal number(5);

beginselect into v_ename,v_sal from employees e where

update employees e set where

dbms_'雇员'||v_ename||'的工资被改为'||to_char(v_sal+p_raise));

commit;

exception

when others then

dbms_'发生错误,修改失败!')

rollback;

end;2、基于概念模型所生成的数据库表,创建一个续借操作存储过程p_xj。并将存储过程**粘贴在后面:

点击网页上(参考图3.1 当前借阅记录)的“续借”按钮时,该存储过程将被调用。

输入参数:借阅id(参数名自己取)

输出参数:成功标志(参数名自己取), 续借成功返回0,不成功返回-1

算法流程:先判断当前日期(sysdate)是否大于所输入参数“借阅id”对应的“当前借阅”表中“应还日期”字段的值,若是则输出“您已逾期,不允许续借”,然后返回。若不是则再判断“当前借阅表”中“续借次数”字段的值是否大于0,若不大于0则修改续借状态为“已续借”,并修改应还日期=原应还日期+借阅规则表中的允许续借天数;否则,提示“已续借,不允许再续借”。

存储过程**:

create or replace procedure p_xj(jyid in number default 11111111)

asv_date date;

v_times number(5);

beginselect 应还日期,续借次数 into v_date, v_times from 当前借阅 where 借阅id=jyid;

if sysdate>v_date then

dbms_'您已逾期,不允许续借!')

elsif v_times<=0 then

update 当前借阅 set 应还日期=应还日期+30;

dbms_'您已逾期,不允许续借!')

elsedbms_'续借成功!')

end if;

exception

when others then

dbms_'发生错误,续借失败!')

rollback;

end;3、根据图书借阅管理业务(可以参考下面的“需求背景参考”),设计1个存储过程。

要求:1、仿照示例,写出设计思路。

2、有能力同学将自己设计的存储过程实现。

设计思路填写:

预约操作存储过程:

同学在图书馆发现想要借的书被借完了时将调用此存储过程,该存储过程的具体要求是:

系统利用同学提供的借完的书的索书号查询这本书最快的还书日期,根据扫描校卡,获取学生的读者卡号、姓名、班级及联系**这些信息。

获取这些信息后,生成预约记录,并将索书号、书名、学生卡号、姓名、班级、联系**插入到预约记录中,并且将此书的状态改为“已预约”。

示例:1)还书操作存储过程。

到图书馆还书扫描书的条码时,将调用此存储过程。该存储过程的具体要求是:

根据被扫描书的条码号,获取当前借阅表中的读者卡号和应还日期,判断应还日期小于当前日期(说明已逾期),则往缴款记录表中插入一条记录,并将读者表中的欠款状态改为欠款金额。

然后不管有没有逾期都把此借阅记录插入到历史借阅表中,再把当前借阅表中的这条记录删除,若该书的索书号有预约记录,则修改馆藏书目中此书的书刊状态为“预约到馆”,并根据此索书号修改最先预约且无书刊条码号的预约记录:条码号由null改为所还图书的条码号。

若无预约记录,则修改馆藏书目中此书的书刊状态为“正在上架”。

整个过程应使用事务,任何其中一个操作失败,就应该回滚事务)

需求背景参考:

图书借阅管理系统需要实现的主要功能如下:

1) 借书:如果当前借阅数达到读者的最大本数不能借,有超期未还的图书不能借。

2) 还书:

3) 预约被借走的书:生成预约记录。

4) 续借:用户反映每次点10多次续借太麻烦,是否能实现点一下,就完成所有的续借。

电学实验实验

实验四 测电源的电动势和内阻练习。1 如图所示是测量干电池电动势和内电阻的实验电路,为了减少系统误差,电压表的内阻应 变阻器的全电阻应接通电键时滑动变阻器的滑片c应在。2 用伏安法测电源电动势和内电阻的实验电路如图2所示,现备有以下器材 a 干电池一个b 滑动变阻器 阻值范围0 50 c 滑动变阻器...

实验键盘实验

实验目的 1 学习lpc系列处理器gpio口的使用方法 2 学习用keil软件开发arm程序方法和步骤。3 学习用反转扫描法实现键盘的输入。4 学习74hc595驱动数码管的编程方法。实验要求 1 了解lpc系列处理器gpio口的功能原理 2 在keil中设计arm程序,实现74hc595对数码管驱...

实验目的 实验内容 实验报告

实验一。一 实验目的。1 熟悉 4.0 开发运行环境及配置。2 掌握创建 发布 复制 的过程。3 掌握 设置和虚拟目录设置的过程。二 实验内容及步骤。三 实验总结。实验二。一 实验目的。1 掌握c 基础语法 值类型 引用类型 装箱和拆箱 2 流程控制 case while for foreach 3...