文档章节

oracle 行转列(用函数和游标完成)

陈爱茹cx1992
 陈爱茹cx1992
发布于 2016/07/26 17:34
字数 297
阅读 2
收藏 0
create table students
(student_id  varchar2(32),
student_name varchar2(180),
student_age number
)
insert into students values('1','金瑞','14');
insert into students values('2','中军','15');
insert into students values('3','于瑞','14');
insert into students values('4','快乐','14');
insert into students values('5','刘强','14');
insert into students values('6','红豆','14');
insert into students values('7','张明','14');
insert into students values('8','宿迁','14');
insert into students values('9','蓝蝶','14');
insert into students values('0','奇美','14');
-- 行转列 将多行数据转换为一列。例如学生表中将学生姓名串起来
create or replace
function getStudentNameString
  return varchar2 as
  begin
    declare cursor cu_student is
    select student_name from students order by student_id;
    student_name varchar2(180);
    rowString varchar2(1000);
    
    begin
      open cu_student;
      fetch cu_student into student_name;
      while cu_student%found loop
        rowString :=rowString || student_name || ',';
        fetch cu_student into student_name;
       end loop;
       return substr(rowString,1,length(rowString)-1);
      end;
     end getStudentNameString;
-- 测试
select getStudentNameString() from dual;
-- 代码说明
 declare cursor cu_student is select student_name from students order by student_id;
用于声明一个游标,该游标可用于循环获得数据表中所有学生姓名记录;

 fetch cu_student into student_name;
 用于将游标所指向的当前记录的数据赋值给student_name;
 
 while cu_student%found loop
   用于循环处理游标所指向的记录;
  
 rowString :=rowString || student_name || ',';
 用于将变量student_name的值添加到rowString的末尾。


本文转载自:http://blog.csdn.net/ruru7989/article/details/12316105

共有 人打赏支持
陈爱茹cx1992
粉丝 0
博文 59
码字总数 0
作品 0
济南
程序员
私信 提问
Java程序员的日常——存储过程知识普及

存储过程是保存可以接受或返回用户提供参数的SQL语句集合。在日常的使用中,经常会遇到复杂的业务逻辑和对数据库的操作,使用存储过程可以进行封装。可以在数据库中定义子程序,然后把子程序...

青夜之衫
2017/12/05
0
0
【书评:Oracle查询优化改写】第14章 结尾章

【书评:Oracle查询优化改写】第14章 结尾章 一.1 相关参考文章链接 前13章的链接参考相关连接: 【书评:Oracle查询优化改写】第一章 http://blog.itpub.net/26736162/viewspace-1652985/ 【书...

技术小胖子
2017/11/08
0
0
oracle 分析函数

Oracle 行列转换函数 create table exam_record(id integer primary key,username varchar2(40),classtype varchar2(40),classname varchar2(200),score number(20,2));insert into exam_re......

guibawudi1985
2017/06/07
0
0
Oracle 行转列pivot 、列转行unpivot 的Sql语句总结

转自:http://blog.csdn.net/xiaokui_wingfly/article/details/42419207 多行转字符串 这个比较简单,用||或concat函数可以实现 实际上就是拆分字符串的问题,可以使用 substr、instr、regex...

Amui
2016/06/29
373
0
oracle数值类型--LONG类型

Oracle中的LONG类型有两种: LONG文本类型,能存储2GB的文本。与VARCHAR2或CHAR类型一样,存储在LONG类型中的文本要进行字符集转换。 LONG RAW类型,能存储2GB的原始二进制数据(不用进行字符...

Annabelle319
08/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring boot 各种常用注解总结(不断完善中)

@Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。 @Scope注解 作用域 @Lazy(true) 表示延迟初始化 @Service用于标注业务层组件、...

覃大光
10分钟前
0
1
《让家庭教育回归生活》读书笔记3000字范文

《让家庭教育回归生活》读书笔记3000字范文: 以前,只知道新东方是教英语的,也培训挖掘机司机,一直不知道他们还研究家庭教育。读了《让家庭教育回归生活》一书,才知道他们的家庭教育高峰...

原创小博客
21分钟前
0
0
spring学习笔记(二)spring 事件的使用

spring 中的事件 spring事件通过订阅发布 可以解耦操作 可以同步 可以异步 步骤 编写事件 通过继承org.springframework.context.ApplicationEvent 来编写事件 public ApplicationEvent(Obj...

NotFound403
昨天
13
0
特斯拉车主成功破解了自己Model 3汽车

据汽车博客Electrek消息,一位特斯拉车主成功破解了自己Model 3汽车,还在此基础上运行了Ubuntu。 这位叫trsohmers的网友表示,“功劳大多要归到Ingineerix的头上,他花了数月才找到初始的那...

linuxCool
昨天
4
0
Gitbook : random errors when using gitbook plugin on running "gitbook serve"

在执行gitbook serve时,会有不定的失败错误 参考问题 :#1309 解决方案: 更新gitbook版本,这个问题似乎是3版本的问题 , 官方也不打算在这个版本解决了。 更新 到最新版本后, 不再出现问...

ol_O_O_lo
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部