编写存储过程,对于有8个以上学生报名的课程,费用95折

原创 2015年11月21日 16:40:12

create or replace procedure discount 

is          --//声明部分

  cursor c_group_discount is         --声明游标,保存需要打折的课程编号和名称

    select distinct c.course_no,c.description  --distinct 这里要去重,防止重复打折 。查找满足条件的课程表编号和课程名称

      from enrollment e,section s,course c          --ENROLLMENT:注册表  SECTION:班级表   COURSE:课程表

      where e.section_id =s.section_id         --e表里的外键班级编号等于s表里的主键

        and s.course_no =c.course_no        --班级表里的课程编号外键等于c表里的主键  连接条件就是两个表里的主外键

        group by c.course_no,c.description,e.section_id  --按照课程编号,课程名称,以及班级编号进行分组,

--因为在不同的班里可能开同一门课,分完组后统计每一组中行的数量

        having count(*)>= 8;        --做一个三表连接查询来找到哪些课程需要打9.5

begin         --遍历游标,对课程进行打折

  for r_discount in c_group_discount loop   -- r_discount是一个记录变量名字

    update course                      --其实打折呢就是一个update语句

      set cost=cost*0.95

      wherecourse_no=r_discount.course_no;      --从记录里把课程编号拿出来

    dbms_output.put_line('一个5%的折扣给了以下课程:'   --每一次都输出下

     ||r_discount.course_no||' '||r_discount.description);

      

  end loop; 

end discount;



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

PL/SQL之存储过程修改学生学号及触发器实现一致性

(1)创建三个表:Student(S#, Sname, age), Course(C#, cname, credit), SC(s#, c#, score),其中SC的S#和C#都是外键,分别引用St...

机房收费系统中——存储过程中加入事务,实现学生注册

需求介绍: 现在正在开发的机房收费系统,总得来说,是对学生上机进行收费管理(没有要在学校开网吧的意思啊!为了学习面开发的)大体的功能是这样的:学生上机,然后刷卡,下机的时候,再刷卡,然后通过对学生的...

存储过程编写

  • 2014年03月06日 22:54
  • 796B
  • 下载

【5.28-29 北京】2013中国系统与软件过程改进大会会前培训:SpecDD大师班认证课程火热报名中

2013中国系统与软件过程改进大会会前培训:SpecDD大师班认证课程           —“需求和质量整合的敏捷在企业实践中更有效”培训课程           时代在发展,敏捷也在进步,当...

在存储过程中编写正确的事务处理代码(SQL Server 2000 & 2005)

在 SQL Server 中数据库事务处理是个重要的概念,也稍微有些不容易理解,很多 SQL 初学者编写的事务处理代码存往往存在漏洞,本文介绍了三种不同的方法,举例说明了如何在存储过程事务处理中编写正...

用Java编写Oracle数据库存储过程

  • 2008年03月06日 16:30
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编写存储过程,对于有8个以上学生报名的课程,费用95折
举报原因:
原因补充:

(最多只允许输入30个字)