文档章节

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

陈爱茹cx1992
 陈爱茹cx1992
发布于 2016/07/26 17:34
字数 297
阅读 1
收藏 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数值类型--LONG类型

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

Annabelle319
08/24
0
0
数据库设计及开发规范,sql性能优化

1 引言 1.1 编写目的 本文档用于规范数据库设计、开发等方面的内容。 1.2 预期读者 本文档的预期读者为本项目组全体成员,以及其他与项目有关的管理人员。 1.3 术语定义 OMP:Operation Man...

江影
04/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Kafka如何做到1秒处理1500万条消息?

Apache Kafka 是一款流行的分布式数据流平台,它已经广泛地被诸如 New Relic(数据智能平台)、Uber、Square(移动支付公司)等大型公司用来构建可扩展的、高吞吐量的、且高可靠的实时数据流系统...

架构师springboot
26分钟前
5
0
如何清理Nexus Repository Manager

随着开发运维一体化的理念逐渐深入,持续集成流水线已经成为软件开发的标配。持续集成通过高度自动化的方式,使得构建发布变得非常简单,构建发布次数随之变的越来越多。我们在享受高频次的构...

JasonSE
39分钟前
1
0
聊聊storm的ack机制

序 本文主要研究一下storm的ack机制 实例 SentenceSpout public class AckSentenceSpout extends BaseRichSpout { private ConcurrentHashMap<UUID, Values> pending; private Spo......

go4it
48分钟前
1
0
《netty入门与实战》笔记-05:netty内置的channelHandler

Netty 内置了很多开箱即用的 ChannelHandler。下面,我们通过学习 Netty 内置的 ChannelHandler 来逐步构建我们的 pipeline。 ChannelInboundHandlerAdapter 与 ChannelOutboundHandlerAdap...

Funcy1122
今天
3
0
帧动画(wifi信号动态动画)

准备六张wifi不同信号强度的素材图片,复制到drawable目录中 在drawable目录中新建frame文件,并编写代码 <animation-list xmlns:android="http://schemas.android.com/apk/res/android"> ...

lanyu96
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部