Oracle:模拟高考查分~一个简单的存储过程
2013-02-02 14:06
357 查看
1.建立表学生信息表(stu_info)并插入数据
![](http://img1.51cto.com/attachment/201302/140714352.jpg)
2.建立学生志愿表(stu_wish)
![](http://img1.51cto.com/attachment/201302/140916975.jpg)
3.建立大学信息表(university_info)
![](http://img1.51cto.com/attachment/201302/141052417.jpg)
4. 建立学生考试成绩表(stu_grade)
![](http://img1.51cto.com/attachment/201302/141222228.jpg)
5.建立提档线表(low_criterion)
![](http://img1.51cto.com/attachment/201302/141420191.jpg)
6.建立程序查询存储过程
#执行结果如下==================================
![](http://img1.51cto.com/attachment/201302/141627700.jpg)
7.建立录取查询存储过程
#执行结果如下==================
![](http://img1.51cto.com/attachment/201302/141755617.jpg)
本文出自 “smileliuyb” 博客,请务必保留此出处http://smileliuyb.blog.51cto.com/6235781/1131088
create table stu_info ( stu_num number(10) primary key, stu_name varchar2(10) not null, stu_sex varchar2(2) check(stu_sex in('M','F')), phone_num number(11), idcard_num varchar2(18), stu_school varchar2(50), post_addr varchar2(50) );
![](http://img1.51cto.com/attachment/201302/140714352.jpg)
insert into stu_info values (2012100201,'zs','M',13800138000,'130822198804070011','HBSJZDYZX','HBSJZSZXLWWJ47H'); insert into stu_info values (2012100202,'ls','M',13821138012,'130822198401170051','HBSJZDYZX','HBSJZSZXLNJ143H'); insert into stu_info values (2012100203,'ml','F',13315819091,'131812198811031004','HBSJZDYZX','HBSJZSKML33H'); insert into stu_info values (2012100204,'ww','M',18010078102,'131822198904173312','HBCDDYZX','HBSJCDSTLJ42H'); insert into stu_info values (2012100205,'yb','M',13511313105,'130825198704143301','HBCDDYZX','HBCDDYZX'); insert into stu_info values (2012100206,'ff','F',18710013306,'100012198802041724','HBCDCYZX','HBCDLHRXNJ270H'); insert into stu_info values (2012100207,'zx','F',13101108892,'130824198711122212','HBCDCYZX','HBCDLHXDZC009H'); insert into stu_info values (2012100208,'tz','M',13800138010,'130822198804270121','HBCDLHDYZX','HBCDLHXBZC191H'); insert into stu_info values (2012100209,'xf','M',18710081213,'13224219860612913X','HBCDLHDYZX','HBCDLHDYZX'); insert into stu_info values (2012100210,'aq','F',13800138001,'130822198402110134','HBCDLHDYZX','HBCDLHDYZX'); insert into stu_info values (2012100211,'lm','F',13800138100,'211800198805313114','HBCDLHDYZX','BJSXCQZLGL134H'); insert into stu_info values (2012100212,'lw','M',18113081412,'130998198608093919','HBCDCYZX','BJSXCQZLGL134H'); insert into stu_info values (2012211101,'bk','M',18133065974,'701822198706090115','HBSJZDYZX','HBSJZDYZX'); insert into stu_info values (2012211102,'by','M',13900139001,'12932119880407091X','HBSJZDYZX','HBSJZSZXLWWJ90H'); insert into stu_info values (2012211103,'mm','F',13800138041,'900838198612011136','HBSJZDYZX','HBSJZDYZX'); insert into stu_info values (2012211104,'wj','M',13611829910,'887990198711871117','HBCDDYZX','HBCDDYZX'); insert into stu_info values (2012211105,'jf','F',17988011992,'130826198701171008','HBSCDDYZX','HBCDDYZX'); insert into stu_info values (2012211106,'sf','F',18890988138,'130822198804070012','HBSCDDYZX','HBSCDSGYL110H'); insert into stu_info values (2012211107,'st','M',17799088897,'187908198811070013','HBSCDLHDYZX','HBSCDSLHZXL998H'); insert into stu_info values (2012211108,'zd','M',13800981786,'299822198804071021','HBSCDLHDYZX','HBSCDLHDYZX'); insert into stu_info values (2012211109,'xx','F',18900000909,'131825198709221414','HBSLHDYZX','HBSLHDYZX'); insert into stu_info values (2012311110,'ll','M',13800090099,'13081819851009','HBSLHDYZX','HBSLHDYZX'); insert into stu_info values (2012341401,'sq','M',18010179986,'19787619890922000X','HBSJZDYZX','HBSJZSZXLDXJ10H'); insert into stu_info values (2012341402,'wm','F',13800138000,'131822198804070012','HBSJZDYZX','HBSJZSZXLFZL99H'); insert into stu_info values (2012341403,'sl','M',13800198010,'198898198606091785','HBSCDDYZX','HBSCDSFPL78H'); insert into stu_info values (2012341404,'zq','M',16310137108,'316611198801173309','HBSCDDYZX','HBSCDDYZX'); insert into stu_info values (2012341405,'sz','F',13010013875,'101775198712041124','HBSLHDYZX','HBSLHDYZX'); insert into stu_info values (2012341406,'bf','M',13810131100,'130822198604071701','HBSJZDYZX','HBSLHXFYL8H'); insert into stu_info values (2012341407,'zh','F',19999999999,'99999919890929999Y','HBSLHDYZX','HBSLHDYZX');
2.建立学生志愿表(stu_wish)
create table stu_wish ( stu_num number(10) primary key, fir_university_id number(5) not null, sec_university_id number(5) );
![](http://img1.51cto.com/attachment/201302/140916975.jpg)
insert into stu_wish values (2012100201,10001,20002); insert into stu_wish values (2012100202,10003,20002); insert into stu_wish values (2012100203,10004,20001); insert into stu_wish values (2012100204,10004,20005); insert into stu_wish values (2012100205,10005,20001); insert into stu_wish values (2012100206,10002,20005); insert into stu_wish values (2012100207,10003,20003); insert into stu_wish values (2012100208,10001,20004); insert into stu_wish values (2012100209,10002,20004); insert into stu_wish values (2012100210,10005,20002); insert into stu_wish values (2012100211,10002,20003); insert into stu_wish values (2012100212,10003,20002); insert into stu_wish values (2012211101,10011,20011); insert into stu_wish values (2012211102,10012,20015); insert into stu_wish values (2012211103,10014,20014); insert into stu_wish values (2012211104,10013,20015); insert into stu_wish values (2012211105,10013,20012); insert into stu_wish values (2012211106,10015,20013); insert into stu_wish values (2012211107,10011,20012); insert into stu_wish values (2012211108,10012,20011); insert into stu_wish values (2012211109,10012,20014); insert into stu_wish values (2012311110,10014,20015); insert into stu_wish(stu_num,fir_university_id) values (2012341401,10021); insert into stu_wish(stu_num,fir_university_id) values (2012341402,10022); insert into stu_wish(stu_num,fir_university_id) values (2012341403,10023); insert into stu_wish(stu_num,fir_university_id) values (2012341404,10032); insert into stu_wish(stu_num,fir_university_id) values (2012341405,10032); insert into stu_wish(stu_num,fir_university_id) values (2012341406,10031); insert into stu_wish(stu_num,fir_university_id) values (2012341407,10033);
3.建立大学信息表(university_info)
create table university_info ( uni_id number(5) primary key, uni_name varchar2(10) not null, batch_id number(5), low_cri number(4,1));
![](http://img1.51cto.com/attachment/201302/141052417.jpg)
insert into university_info values(10001,'TsingHua',1001,632); insert into university_info values(10002,'BeijingUni',1001,629); insert into university_info values(10003,'Fudan',1001,600); insert into university_info values(10004,'HaGongDa',1001,601); insert into university_info values(10005,'BeijingLG',1001,590); insert into university_info values(20001,'YanShan',1002,519); insert into university_info values(20002,'HBFarmUni',1002,431); insert into university_info values(20003,'YNDX',1002,497); insert into university_info values(20004,'BFXY',1002,561); insert into university_info values(20005,'TSWL',1002,500); insert into university_info values(10011,'TsingHua',1003,623); insert into university_info values(10012,'BeijingUni',1003,617); insert into university_info values(10013,'Fudan',1003,585); insert into university_info values(10014,'ZhejiangUn',1003,601); insert into university_info values(10015,'BeijingRA',1003,580); insert into university_info values(20011,'YanShan',1004,519); insert into university_info values(20012,'HBFarmUni',1004,431); insert into university_info values(20013,'YNDX',1004,497); insert into university_info values(20014,'BFXY',1004,561); insert into university_info values(20015,'TSWL',1004,500); insert into university_info values(10021,'YanShan',1005,420); insert into university_info values(10022,'HBFarmUni',1005,431); insert into university_info values(10023,'TsingHua',1005,527); insert into university_info values(10031,'YanShan',1006,330); insert into university_info values(10032,'HBFarmUni',1006,359); insert into university_info values(10033,'TsingHua',1006,575);
4. 建立学生考试成绩表(stu_grade)
create table stu_grade ( stu_num number(10) primary key, branch varchar2(3) check(branch in('A','S','SP','AR')), grade_mat number(4,1) check(grade_mat<=150 and grade_mat>=0), grade_che number(4,1) check(grade_che<=150 and grade_che>=0), grade_eng number(4,1) check(grade_eng<=150 and grade_eng>=0), grade_inte number(4,1) check(grade_inte<=300 and grade_inte>=0) );
![](http://img1.51cto.com/attachment/201302/141222228.jpg)
insert into stu_grade values (2012100201,'S',139,114,98,251); insert into stu_grade values (2012100202,'S',79,96,81,212); insert into stu_grade values (2012100203,'S',112.5,88,149,229); insert into stu_grade values (2012100204,'S',87,94,82,181); insert into stu_grade values (2012100205,'S',76,90,67,101); insert into stu_grade values (2012100206,'S',138,141,150,281); insert into stu_grade values (2012100207,'S',88,94,123,61); insert into stu_grade values (2012100208,'S',97,42,80,119); insert into stu_grade values (2012100209,'S',39.5,24,48.5,62); insert into stu_grade values (2012100210,'S',110,80,82,180.5); insert into stu_grade values (2012100211,'S',97,88,109,200.5); insert into stu_grade values (2012100212,'S',138,74,28,281); insert into stu_grade values (2012211101,'A',112,138,143,201); insert into stu_grade values (2012211102,'A',97,124,138,219); insert into stu_grade values (2012211103,'A',72,64,98,123); insert into stu_grade values (2012211104,'A',139,144,150,257); insert into stu_grade values (2012211105,'A',121,113,111.5,198); insert into stu_grade values (2012211106,'A',100,74,72,81); insert into stu_grade values (2012211107,'A',71,84,91,151); insert into stu_grade values (2012211108,'A',127,144,146.5,232); insert into stu_grade values (2012211109,'A',76,114,56,99.5); insert into stu_grade values (2012311110,'A',19,81,84.5,51.5); insert into stu_grade values (2012341401,'SP',90,88,98.5,177); insert into stu_grade values (2012341402,'SP',39,64,51,70); insert into stu_grade values (2012341403,'SP',65,94,108,159); insert into stu_grade values (2012341404,'AR',99,110,98.5,251); insert into stu_grade values (2012341405,'AR',89,114,96,193); insert into stu_grade values (2012341406,'AR',29,76,99.5,201); insert into stu_grade values (2012341407,'AR',63,82,73,106);
5.建立提档线表(low_criterion)
create table low_criterion( branch varchar2(3) check(branch in('A','S','SP','AR')), batch_id number(5),batch_name varchar2(10),low_cri number(4,1));
![](http://img1.51cto.com/attachment/201302/141420191.jpg)
insert into low_criterion values('S',1001,'BKYP',582); insert into low_criterion values('S',1002,'BKEP',430); insert into low_criterion values('A',1003,'BKYP',573); insert into low_criterion values('A',1004,'BKEP',450); insert into low_criterion values('SP',1005,'SPORT',399); insert into low_criterion values('AR',1006,'ART',300);
6.建立程序查询存储过程
create or replace procedure pro_search_grade(stu_n in number) as pro_bra varchar2(3); grade_sum number(4,1):=0; pro_batch varchar2(10); max_low number(4,1):=0; pro_name varchar2(10); max_sum_grade number(4,1):=0; max_stu_name varchar2(10); max_stu_num number(10):=0; begin select stu_name into pro_name from stu_info where stu_num=stu_n; dbms_output.put('Student: '); dbms_output.put_line(pro_name); select branch into pro_bra from stu_grade where stu_num=stu_n; select grade_mat+grade_che+grade_eng+grade_inte into grade_sum from stu_grade where stu_num=stu_n; dbms_output.put('Your grade is '); dbms_output.put_line(grade_sum); select max(low_cri) into max_low from low_criterion where branch=pro_bra and grade_sum>=low_cri; if max_low>0 then select batch_name into pro_batch from low_criterion where low_cri=max_low; dbms_output.put('Congratulations to you for inetrnational '); dbms_output.put_line(pro_batch); else dbms_output.put_line('You will dead~'); end if; select max(sum_grade) into max_sum_grade from (select grade_mat+grade_che+grade_eng+grade_inte sum_grade from stu_grade where branch=pro_bra); with tmp_t1 as (select stu_num,grade_mat+grade_che+grade_eng+grade_inte sum_grade from stu_grade) select stu_num into max_stu_num from tmp_t1 where sum_grade=max_sum_grade; select stu_name into max_stu_name from stu_info where stu_num=max_stu_num; dbms_output.put('The best student in this exap is '); dbms_output.put_line(max_stu_name); dbms_output.put('His grade is '); dbms_output.put_line(max_sum_grade); dbms_output.put('His Student Number is '); dbms_output.put_line(max_stu_num); end; /
#执行结果如下==================================
![](http://img1.51cto.com/attachment/201302/141627700.jpg)
7.建立录取查询存储过程
create or replace procedure pro_search_admit(stu_n in number) as grade_sum number(4,1):=0; wish_uni_grade number(4,1):=999; uni_num number(5):=0; univer_name varchar2(10); begin select grade_mat+grade_che+grade_eng+grade_inte into grade_sum from stu_grade where stu_num=stu_n; select fir_university_id into uni_num from stu_wish where stu_num=stu_n; select tmp_t1.low_cri into wish_uni_grade from university_info tmp_t1,stu_wish tmp_t2 where tmp_t1.uni_id=tmp_t2.fir_university_id and tmp_t2.stu_num=stu_n; if wish_uni_grade>=grade_sum then wish_uni_grade := 999; end if; if wish_uni_grade = 999 then select sec_university_id into uni_num from stu_wish where stu_num=stu_n; select tmp_t1.low_cri into wish_uni_grade from university_info tmp_t1,stu_wish tmp_t2 where tmp_t1.uni_id=tmp_t2.sec_university_id and tmp_t2.stu_num=stu_n; end if; if wish_uni_grade<=grade_sum then select uni_name into univer_name from university_info where uni_id=uni_num; dbms_output.put('Congratulations to you that you are admitted by '); dbms_output.put_line(univer_name); else dbms_output.put_line('Sorry,I have search so hardly,But not find any message!'); end if; end; /
#执行结果如下==================
![](http://img1.51cto.com/attachment/201302/141755617.jpg)
本文出自 “smileliuyb” 博客,请务必保留此出处http://smileliuyb.blog.51cto.com/6235781/1131088
相关文章推荐
- oracle的一个简单的存储过程
- Oracle,Sql,procedure 感觉自己写的很棒的一个存储过程
- oracle常见为题汇总,以及一个简单数据连接操作工厂
- 一个简单的分页存储过程
- 编写一个存储过程 sqlserver专用 oracle稍有区别
- 分享自己做的一个简单的查询表达式模拟(ESQL,Linq)(1)
- 模拟一个简单的基于tcp的远程关机程序
- 一个简单的oracle分页存储过程的实现和调用
- oracle 中 Procedues (存储过程) 简单的分页。
- 这是oracle包实体里面的一个存储过程 oracle存储过程中的if...elseif...else用法
- 自己动手模拟开发一个简单的Web服务器
- c#中泛型集合类的一个简单模拟实现
- 一个简单的模拟歌曲分类的布局
- tomcat学习笔记(二) 模拟一个简单的servlet容器
- Oracle Workflow Demo (1) - 一个简单的请假申请工作流
- 一个简单的存储过程
- 自己第一次写触发器(oracle)-一个简单的触发器
- 最简单的一个Oracle定时任务
- 用android做的一个简单的电话拨号器的错误的解决(用android模拟两个人打电话,虽然不能通话)
- oracle 创建一个job运行存储过程