CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  开发

求一存储过程或者相关资料

楼主peter207(辉)2005-01-08 11:40:59 在 Oracle / 开发 提问

三张表:  
   
  学生  
  ------------------------  
  学生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

相关问题

  • 求一存储过程或者相关资料
  • 寻求oracle存储过程语法的相关资料
  • 存储过程相关
  • 如何调试存储过程,在SQL7.0上?!!相关资料也可。
  • 询问:以表名做为参数的存储过程的 相关资料
  • 想找 存储过程 的资料
  • 谁有关于"存储过程"的资料?
  • 我要SQL Server的关于存储过程的资料,谁有?????
  • 谁有存储过程的学习资料?
  • 100分求关于SYBASE存储过程方面的资料!

关键词

  • 学生
  • 考场
  • 准考证
  • cur
  • 容量
  • 编号
  • min
  • number
  • where
  • test

得分解答快速导航

  • 帖主:peter207
  • swswssw
  • baojianjun

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo