设为首页 收藏本站
查看: 990|回复: 0

[经验分享] Oracle显示根据高考分数模拟录取

[复制链接]

尚未签到

发表于 2016-8-12 07:14:37 | 显示全部楼层 |阅读模式
  题目要求:

1,创建student表和result表
2,pl/sql对学生的成绩数据进行处理
3,处理的逻辑是根据每门专业课的最低分线和总分的最低分数线自动的将录取和落选
  
  
  1,创建student表,和result表
  学生信息表;

create table student(
student_id number primary key,--学生id
math  number,--数学分数
chinaese number,--语文分数
en number,--英语分数
wenke number,--文科学分
likenumber number,--理科分数
zhuanyeke number,--专业分数
student_sum number --总分
);
  
  学生录取状态表;

create table result(
student_id number,
enrollresult number
);
  
  2.插入一些考生的数据
  student表插入数据;

理科
insert into student(student_id,math,chinaese,en,likenumber,STUDNET_SUM) values(4307211993,120,130,140,260,650);
insert into student(student_id,math,chinaese,en,likenumber,STUDNET_SUM) values(4307211997,20,30,40,260,350);
insert into student(student_id,math,chinaese,en,likenumber,STUDNET_SUM) values(4307211998,120,30,240,130,520);
理科专业
insert into student(student_id,math,chinaese,en,likenumber,zhuanyeke,STUDNET_SUM) values(4307211994,128,128,138,260,200,844);
insert into student(student_id,math,chinaese,en,likenumber,zhuanyeke,STUDNET_SUM) values(4307211999,120,30,40,130,180,500);
insert into student(student_id,math,chinaese,en,likenumber,zhuanyeke,STUDNET_SUM) values(4307211100,20,30,13,157,180,400);
文科
insert into student(student_id,math,chinaese,en,wenke,STUDNET_SUM) values(4307211995,110,140,50,270,550);
insert into student(student_id,math,chinaese,en,wenke,STUDNET_SUM) values(4307211101,90,80,50,180,400);
insert into student(student_id,math,chinaese,en,wenke,STUDNET_SUM) values(4307211102,110,120,80,230,540);
文科专业
insert into student(student_id,math,chinaese,en,wenke,zhuanyeke,STUDNET_SUM) values(4307211996,120,30,40,160,180,530);

  
  result表插入数据;

insert into result values(4307211993);
insert into rasult values(4307211997);
insert into rasult values(4307211998);
insert into rasult values(4307211994);
insert into rasult values(4307211999);
insert into rasult values(4307211100);
  
  3,编写带参数的存储过程,记录考生的分数以及保存考生的录取状态 0表示落选,1表示录取

create or replace procedure pro_score(v_id number) is
v_student_id student.student_id%type;
v_math student.math%type;
v_chinaese student.chinaese%type;
v_en student.en%type;
v_wenke student.wenke%type;
v_like student.likenumber%type;
v_zhuanye student.zhuanyeke%type;
v_score number(7);
begin
select STUDENT_ID, MATH ,CHINAESE,EN ,WENKE ,LIKENUMBER ,ZHUANYEKE  into v_student_id , v_math,v_chinaese,v_en ,v_wenke,v_like,v_zhuanye from student where student_id=v_id;
v_score := v_math + v_chinaese + v_en + v_wenke + v_like + v_zhuanye;
dbms_output.put_line('总分'||v_score);
if v_score>500 then
update result set ENROLLRESULT=1 where STUDENT_ID=v_id;
dbms_output.put_line(v_student_id||'被录取了');
else
update result set ENROLLRESULT=0 where STUDENT_ID=v_id;
dbms_output.put_line(v_student_id||'落榜了');
end if;
end;
 
  
  
  4,创建游标,用于从student表中查询数据,并加入一个异常机制  0表示落选,1表示录取

set serveroutput on;
create or replace procedure pro_score is
myrow student%rowtype;
v_score number(7);
type type_cursor is ref cursor;
rowcursor type_cursor ;
begin
open  rowcursor for select * from student;
loop
fetch rowcursor into myrow ;
v_score := myrow.math + myrow.chinaese + myrow.en + nvl(myrow.wenke,0) + nvl(myrow.likenumber,0) +nvl( myrow.zhuanyeke,0);
dbms_output.put_line('总分'||v_score);
exit when rowcursor%notfound;
if v_score>500 then
update result set ENROLLRESULT=1 where STUDENT_ID=myrow.student_id;
dbms_output.put_line(myrow.student_id||'被录取了');
else
update result set ENROLLRESULT=0 where STUDENT_ID=myrow.student_id;
dbms_output.put_line(myrow.student_id||'落榜了');
end if;
end loop;
end;
/
  exec pro_score;
  总分650
4307211993被录取了
总分350
4307211997落榜了
总分520
4307211998被录取了
总分854
4307211994被录取了
总分500
4307211999落榜了
总分400
4307211100落榜了
总分570
4307211995被录取了
总分400
4307211101落榜了
总分540
4307211102被录取了
总分530
4307211996被录取了
总分530
  
  
  
  在游标中添加异常机制,实在是不知道怎么添加了,所以把代码和思路贴出来让大家帮我看一下;怎么解决这个问题
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-256664-1-1.html 上篇帖子: Oracle 顺序控制,异常处理,动态sql 下篇帖子: ORACLE分页SQL语句执行效率比拼
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表