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. android 硬件解码学习

    FileInputStream in = new FileInputStream("/sdcard/sample.ts"); String mimeType = "vid ...

  2. Oozie — What Why and How

    Oozie是什么? Oozie最初是Yahoo!为Hadoop开发的一个工作流调度器,一个工作流有多个Job组成.它允许用户提交由多个Job组成的工作流配置文件,这些Job既可以顺序执行,也可以并行执 ...

  3. 实现android4.4新特性:沉浸式状态栏

    先放效果图: 所谓沉浸式状态栏,就是android4.4以后新加入的ui效果,能使最顶部的状态栏自动适宜app顶部的颜色,使两者看起来更像融为一体.下面放上实现代码: requestWindowFea ...

  4. 代码初始化 故事板初始化 xib初始化总结

    对象的初始化有三种方式   // 代码创建 - (id)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { ...

  5. Mplayer ARM平台下交叉编译

    下载MPlayer http://www.mplayerhq.hu/design7/dload.html 编译环境 系统 : ubuntu 11.04 交叉编译器版本 : Sourcery G++ L ...

  6. windows驱动编程(目录)

    目录 第一章 入门 配置开发环境 第一个程序 应用程序调用内核函数的流程

  7. A - Next_permutation

    首先介绍一下next_permutation函数的用途! 按照STL文档的描述,next_permutation函数将按字母表顺序生成给定序列的下一个较大的排列,直到整个序列为降序为止. prev_p ...

  8. M端页面-绝对定位布局

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  9. 层次节点——NODE节点

    1.html <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...

  10. KVO的实现原理探寻

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...