数据库上机 能使用 Oracle 进行示例数据库的设计。掌握 Oracle(5)

2019-06-17 09:12

update college set 录取人数 =v_count where 院校编号 =v_yxbh; commit; end;

说明:该过程按院校进行二志愿投档,游标定义了二志愿报考该院校且录取状态为 0( 未录取 ) 的、按总分从高到低排序的所有考生信息。 v_count 记录录取的人数,初值为一志愿已经录取的人数,每当录取一个考生,则 v_count 加 1 。若 v_count 等于计划招生人数,则结束录取。如果 V_COUNT 小于招生人数,则取游标的下一个考生,判断其分数是否在该院校的最低录取分数线上。如果满足,则标记录取状态为 1 。录取结束后,将录取人数 v_count 回填到院校表。

6 .自动投档程序 autoproc 过程名和参数: autoproc(v_lqzy)

其中, v_lqzy 代表要进行录取的志愿,只能是 1 或 2 , 1 代表一志愿, 2 代表二志愿。 功能:该过程根据选定志愿,循环对所有院校进行投档,即对所有院校循环调用 proc1 或 proc2 。一次完成所有院校的一志愿或二志愿投档。 自动投档程序如下:

SQL> create or replace procedure autoproc(v_lqzy number) as

cursorcollege_cursor is select 院校编号 from college; begin

forcollege_rec in college_cursor loop if(v_lqzy=1) then

proc1(college_rec. 院校编号 ); elsif (v_lqzy=2) then

proc2(college_rec. 院校编号 ); end if;

endloop; end;

说明:定义一个取所有院校编号的游标 COLLEGE_CURSOR ,根据志愿 ( 参数为 1 或 2) ,在游标循环中以取得的院校编号为参数,调用一志愿或二志愿投档过程。 7 .查询考生分数过程 show_score 过程名和参数: show_score (p_bh)

其中, p_bh 代表考生编号。

功能:给出考生的考号,返回考生的高考成绩。 查询考生分数程序如下:

SQL> createor replace procedure show_score(v_bh number) as

v_scorenumber(3); begin

v_score:=get_score(v_bh); ifv_score=-1 then

dbms_output.put_line(' 考生编号错误 !'); else

dbms_output.put_line(get_student_name(v_bh)||' 总分 '||v_score); endif; end;

说明:本过程调用返回考生姓名和分数的函数 get_student_name 和 get_score 。 8 .查询考生录取状态过程 show_result 过程名和参数:

show_result(v_bh)

其中, v_bh 代表考生编号。

功能:给出考生的考号,返回录取院校名称。如果没有录取,则返回 “ 未被录取 ” 。 查询考生录取状态程序如下:

SQL> create or replace procedureshow_result(v_bh number) as

v_lqyxmc varchar2(20); v_xmvarchar2(10); begin

v_xm:=get_student_name(v_bh); ifv_xm=' 无 ' then

dbms_output.put_line(' 考生编号错误 !'); else

select 录取院校名称 into v_lqyxmc from result where 编号 =v_bh; dbms_output.put_line(' 考生 '||v_xm||' 被 '||v_lqyxmc||' 录取 !'); endif; exception when others then

dbms_output.put_line(' 考生 '||v_xm||' 未被录取 !'); end;

说明:查询录取考生视图 result ,如果考生在视图中不存在,则表示未被录取。此过程中调用了前面定义的函数 get_student_name 以获得考生名称。 9 .显示院校录取名册存储过程 student_list 过程名和参数:

student_list(v_yxbh)

其中, v_yxbh 表示院校编号。

功能:指定院校编号,显示按分数排序的统计报表 :

SQL> create or replace procedurestudent_list(v_yxbh number) as

v_sname varchar2(10); v_maxnumber(3); v_minnumber(3); col_rec college%rowtype;

cursorstu_cursor is select * from student where 录取院校 =v_yxbh order by 总分 desc; begin

select * into col_rec from college where 院校编号 =v_yxbh;

dbms_output.put_line(get_college_name(v_yxbh)||' 院校录取统计表 ');

dbms_output.put_line(' 招生人数 '||' 招生人数 '||' 录取人数 : '||col_rec. 录取人数 ||' 录取分数线 : '||col_rec. 录取分数线 );

dbms_output.put_line('-------------------------------');

dbms_output.put_line(' 序号 考生编号 姓名 性别 总分 录取志愿 录取日期 '); forstu_rec in stu_cursor loop ifstu_rec. 性别 =1 then

dbms_output.put_line(rpad(stu_cursor%rowcount,8,'')||rpad(stu_rec. 编号 ,9,' ')||rpad(stu_rec. 姓名 ,9,'')||' 男 '||rpad(stu_rec. 总分 ,9,' ')||rpad(stu_rec. 录取志愿 ,9,' ')||rpad(stu_rec. 录取日期 ,9,' ')); else

dbms_output.put_line(rpad(stu_cursor%rowcount,8,'')||rpad(stu_rec. 编号 ,9,' ')||rpad(stu_rec. 姓名 ,9,' ')||' 女 '||rpad(stu_rec. 总分 ,9,' ')||rpad(stu_rec. 录取志愿 ,9,' ')||rpad(stu_rec. 录取日期 ,9,' ')); endif; endloop;

dbms_output.put_line('-------------------------------');

select max( 总分 ),min( 总分 ) into v_max,v_min from student where 录取院校 =v_yxbh;

dbms_output.put_line(' 最高分 : '||v_max||' 最低分 : '||v_min); end;

说明:把院校编号作为条件,检索出被某个院校录取的考生,并按分数排序。其中,性别显示需要进行转换。过程中,使用了 rpad 函数产生相等的列宽。在列表之后,通过统计查询,显示最高分和最低分。

10 .院校招生情况统计表 college_total 过程名和参数: college_total

功能:按照院校的平均录取分数排序所有院校,统计各院校的最高分数、最低分数,招生人数、录取人数、男生人数、女生人数等信息。 院校招生情况统计程序如下:

SQL> create or replace procedurecollege_total as

v_yxbh number(4); v_avgnumber(4); v_maxnumber(4); v_minnumber(4); v_boynumber(3);


数据库上机 能使用 Oracle 进行示例数据库的设计。掌握 Oracle(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:java第二课知识介绍

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: