create or replace function bb return nvarchar2
as
-----------自定义游标类型
type class_student is record(

sname varchar2(200),
    Oracle varchar2(200),
    Java varchar2(200),
    Android varchar2(200)
);
type score_cursor is ref cursor return class_student;
-----------声明游标变量
student_cursor score_cursor;
v_student class_student;

begin
     open student_cursor for select s.name,s.oracle,s.java,s.android from (
     select name,sum(decode(cname,'Oracle',score,null))as Oracle,
                      sum(decode(cname,'Java',score,null))as Java,
                      sum(decode(cname,'Android',score,null))as Android

from(
        select student.sid,student.name,course.cname,score.score
        from course,student,score 
        where student.sid=score.sid and score.cid=course.cid
        order by student.sid)
        group by name) s;
      dbms_output.put_line('姓名'||'  '||'Oracle'||'  '||'Java'||'  '||'Android');
      fetch student_cursor into v_student;
      while student_cursor%found loop
      dbms_output.put_line(v_student.sname ||'  '||
                                                    case when v_student.Oracle is null then '没考试'
                                                    when v_student.Oracle>=90 then '优秀'
                                                    when v_student.Oracle<90 and v_student.Oracle>=60 then '良好'
                                                    else '不及格' end ||'  '||
                                                    case when v_student.Java is null then '没考试'
                                                    when v_student.Java>=90 then '优秀'
                                                    when v_student.Java<90 and v_student.Java>=60 then '良好'
                                                    else '不及格' end||'  '||
                                                    case when v_student.Android is null then '没考试'
                                                    when v_student.Android>=90 then '优秀'
                                                    when v_student.Android<90 and v_student.Android>=60 then '良好'
                                                    else '不及格' end );
       fetch student_cursor into v_student;

end loop;
      return '';

end bb;

---------------------------------------------------------------------------------

---数据库有三张表:course(cname,cid);
---            student(sname,sid,cid);
---                       score(cid,score);

---三门课程,Oracle,Java,Android。

---根据成绩来区分优秀,良好和有没有考试。

----------------------------------------------------------------------------------

Oracle数据库按属性成绩查询的更多相关文章

  1. Oracle数据库之七 多表查询

    七.多表查询 ​ 对于查询在之前已经学过了简单查询.限定查询.查询排序,这些都属于 SQL 的标准语句,而上一章的单行函数,主要功能是为了弥补查询的不足. ​ 而从多表查询开始就正式进入到了复杂查询部 ...

  2. SQLSERVER 创建对Oracle数据库的DBlink以及查询使用

    1. 与针对oracle数据库一样, 在sqlserver中创建对oracle数据库的dblink 安全性上面也进行定义(貌似不需要跟访问字符串只需要填一个即可) 发现有的版本改注册表不管用 还得修改 ...

  3. Oracle 数据库基础:数据查询与操作

    SELECT uname FROM TUser WHERE uname=‘admin’ SELECT 字段名列表 FROM 表名 WHERE 条件; 在Oracle数据库中,对象是属于模式的,每个账户 ...

  4. 007.Oracle数据库 , 使用%进行模糊查询

    /*Oracle数据库查询日期在两者之间*/ SELECT PKID, OCCUR_DATE, ATA FROM LM_FAULT WHERE ( ( OCCUR_DATE >= to_date ...

  5. Oracle数据库order by排序查询分页比不分页还慢问题解决办法

    简单说下问题,有一个JDBC的查询SQL,分页查询语句中有一个排序order by create_time,理论上来说JDBC查询已经是比较底层的技术了,没有像Hibernate.MyBatis那样又 ...

  6. Oracle数据库之单表查询

    接着上一篇的分享,今天主要给大家分享的是关于数据中的单表查询,单表查询很基础,也很重要,但是任何一个初学者必须要掌握的姿势,单表查询就是对单个表进行操作,查询我们想要的数据.单表查询里面的内容也是比较 ...

  7. Oracle数据库之多表查询一

    上一篇给大家介绍了数据的单表查询,相信大家对于单表的查询应该都有了一些了解.单表查询在数据库中的使用会有一些,但并不是很多,但是作为初学者,我们需要学习单表查询的思路.今天呢,我们为大家介绍一下数据库 ...

  8. ORACLE数据库存储空间使用情况查询

    使用系统sys或者dba权限的账户创建视图如下: 1. 主要从数据库的表dba_data_files,dba_segments两张表中获取.2. 默认数据库保存的是byte单位,转换关系如下: 102 ...

  9. oracle数据库使用之数据查询入门

    1.在查询过程中使用算术表达式对数据进行运算 student表结构如下: 最后一项salary表示每个人的月薪,我现在想查询每个人的年薪: 2.使用nvl函数处理null值,向表中插入一条数据,该数据 ...

随机推荐

  1. Bestcoder HDU5059 Help him 字符串处理

    Help him Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  2. javax inect

    Spring 3 and JSR-330 @Inject and @Named example By mkyong | September 16, 2012 | Viewed : 86,399 tim ...

  3. mysql 服务不见了的解决办法

    昨天打开电脑mysql突然连接不了了,去服务里找,却找不到mysql服务了 解决:5.0版本:开始->运行->cmd,进到mysql安装的bin目录D:\MySQL\bin>mysq ...

  4. exchange邮箱的”单点登陆“

    在跟exchange集成登陆时,通常有这样的需求,用户需要点击邮件链接的时候直接打开,不再需要输入用户名密码,实现所谓的单点登陆. 通常有两种方式 1.form认证 登陆原理:用js模拟表单登陆 代码 ...

  5. 利用cookie改变背景色

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. Android布局控件

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout ...

  7. 《C++ Primer Plus 6th》读书笔记 - 第十一章 使用类

    1. 运算符重载 2. 计算时间:一个运算符重载示例 3. 友元 1. 友元有三种: 友元函数 友元类 友元成员函数 4. 重载运算符:作为成员函数还是非成员函数 5. 再谈重载:一个矢量类 6. 类 ...

  8. arm mov 指令

    语法格式: mov {条件} 1目的寄存器,2源操作数 作用: MOV指令可完成从另一个寄存器.被移位的寄存器或立即数赋值到目的寄存器.其中S选项为指令的操作结果是否操作CPSR中的条件标志位,当没有 ...

  9. yii操作数据库(AR)

    模型: 有多少数据表,就建立多少模型 模型其实就是类 我们对数据库进行操作,需要实例化模型类,产生对象 通过对象调用相关的方法,就可以实现数据库的操作   增加记录 [php] $post =newP ...

  10. 痛苦的版本对齐(3) cygwin下的路径引用

    [续<痛苦的版本对齐(2) 和时间的相关性>]http://www.cnblogs.com/yvivid/p/3541142.html 初步定位,如下告警为.depend文件路径问题导致. ...