欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

oracle包,函数,历程,游标的使用

更新时间: 2014-01-05 02:13:47 责任编辑: Author_N1

 

oracle包,函数,过程,游标的使用
1
VIEW(V_COU_TEA_STU):
显示课程名,授课老师,课程所选学生数,课程是否可选。
2
PROCEDURE(P_TEA_SAL_BOUNS):
输入课程号,若该课程学生平均成绩达标并且不合格人数 <3 时,该任课老师加薪10%。若超过1/3学生不合格,显示任课老师信息以及不合格学生ID,且该课程任课老师的奖金取消。
3
PACKAGE(PKG_F001),包括下面功能:
3.1
创建FNCTION(PKG_F001_FNCTION)、根据输入学生学号,判断学生各课程成绩等级(A:100-90,B:89-80,C:79-60,D:小于60)并输出各课程成绩等级。
3.2
    创建PROCEDURE(PKG_F001_PROCEDURE_01),当传入学生姓名和课程名以及成绩时,则将传入值插入V_SUD_COU_SCO视图中,若视图不存在则创建视图,若输入学生姓名已经存在,则修改视图中课程名与成绩。
3.3
    创建PROCEDURE(PKG_F001_PROCEDURE_02),当输入学生学号时,则将V_SUD_COU视图中该学生对应的信息全部删除
    若该学号不存在,则给出相关提示。
3.4
    定义一个TRIGGER(PKG_FOO1_TRIGGER),要求建立一个日志表(SCS_LOG)记录有关V_SUD_COU_SCO视图的增删情况。
附:日志表字段(LOG_Category,LOG_Time)
3.5
使用带参数的游标,分别显示同一学生不同课程的分数。

--参考方法--
这个过程写两个小时,终于调好了
/***************************
*Name: cux_xzh_proc_teacher_sal
*Purpose: 输入课程号,
*  若该课程学生平均成绩达标并且不合格人数 <3 时,该任课老师加薪10%。
*  若超过1/3学生不合格,显示任课老师信息以及不合格学生ID,且该课程任课老师的奖金取消。
*Author: XZH
*Create At: 2013-12-11
****************************/
CREATE OR REPLACE PROCEDURE cux_xzh_proc_201312111614(
  --o_retcode OUT NUMBER,
  --o_errmsg OUT VARCHAR2,
  o_cid IN xzh_course.cid%TYPE 
)
AS
  v_avg_grade NUMBER;          /*指定课程学生的平均成绩*/     
  v_rate NUMBER;                               /*及格率*/
  v_fail NUMBER;                               /*不合格人数*/
  /*定义教师游标*/
  CURSOR teacher_info_cur
    IS
     SELECT DISTINCT t.*
       FROM xzh_teacher t, xzh_course c, xzh_grade g
      WHERE t.tid = c.tid
        AND c.cid = g.cid
        AND c.cid = o_cid;
  
  /*学生游标*/
  CURSOR fail_sno_cur
  IS
   SELECT s.sno sno,g.grade grade
     FROM xzh_student s, xzh_course c, xzh_grade g
    WHERE s.sno = g.sno
      AND c.cid = g.cid
      AND c.cid = 1
      AND g.grade < 60;
BEGIN
  /*得到平均成绩v_avg_grade*/
  SELECT AVG(g.grade) INTO v_avg_grade
    FROM xzh_course c, xzh_grade g
   WHERE c.cid = g.cid
     AND g.cid = o_cid;
  DBMS_OUTPUT.PUT_LINE(o_cid
--参考方法--
'课程的平均成绩为:'
--参考方法--
v_avg_grade);  
  /*得到不合格人数*/    
  SELECT COUNT(g.sno) INTO v_fail
    FROM xzh_course c, xzh_grade g
   WHERE c.cid = o_cid
     AND c.cid = g.cid
     AND g.grade <60;
  DBMS_OUTPUT.PUT_LINE(o_cid
--参考方法--
'课程的不及格人数为:'
--参考方法--
v_fail); 
 
  /*得到比率v_rate*/
  SELECT e1.n1 / e2.n2
    INTO v_rate
    FROM (SELECT COUNT(g.sno) n1
            FROM xzh_course c, xzh_grade g
           WHERE c.cid = g.cid
             AND g.cid = o_cid
             AND GRADE < 60) e1,
         
         (SELECT COUNT(g.sno) n2
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:13:47
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7225/
本文WWW.DOC100.NET DOC100.NET版权所有。