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

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;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值