实验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...