求一存储过程或者相关资料
三张表:
学生
------------------------
学生id 姓名
1 张三
2 李四
....
考场
----------------------
编号 容量
1 30
2 30
3 60
...
准考证
--------------------------
学生id 考场编号
1 1
2 1
3 1
..
30 1
31 2
......
问题:需要根据考场的容量给学生分配考场,
规则:先往第一个考场分配,考场满(根据考场容量判断)后往第二个分,....
即由‘学生’表和‘考场’表,生成‘准考证’表
请大家不吝赐教,谢谢!
有相关存储过程的资料也可。
问题点数:80、回复次数:3Top
1 楼swswssw(不停地学习...)回复于 2005-01-08 12:45:53 得分 10
很简单地Top
2 楼baojianjun(包子)回复于 2005-01-08 13:08:40 得分 70
用遊標打開考场表
--example僅供參考
create or replace procedure pro_test
as
cursor cur_test is
select 编号 from 考场表;
is_id number(10);
is_limit number(10);
is_min_id number(20);
begin
select min(学生id) into is_min_id from 学生表;
open cur_test;
loop
fetch cur_test into is_id;
exit when cur_test%notfound;
select 容量 into is_limit
from 考场表
where 编号 = is_id ;
insert into 准考证表(
学生id ,
考场编号 )
select 学生id ,
is_id
from (select * from 学生表
where 学生id >= is_min_id
order by 学生id)
where rownum <= is_limit ;
select 学生id into is_min_id
from (select * from 学生表
where 学生id >= is_min_id+1
order by 学生id
minus
select * from 学生表
where 学生id >= is_min_id
order by 学生id
)
where rownum =1 ;
end loop;
close cur_test;
commit;
end;
/
Top
3 楼peter207(辉)回复于 2005-01-30 13:36:26 得分 0
谢谢,问题已解决:)Top




