- 浏览: 275423 次
文章分类
最新评论
-
羽风之扬:
crazydayu 写道您好,我在启动的时候也遇到了这种错误, ...
linux tomcat日志错误Cannot run without an instance id & java.net.UnknownHostExceptio -
羽风之扬:
我的也[是这用错误,改过后没效果。这是我的截图,麻烦帮我看下吧 ...
linux tomcat日志错误Cannot run without an instance id & java.net.UnknownHostExceptio -
hamizhong:
...
Linux和Python脚本自动部署应用一例(2) -
crazydayu:
您好,我在启动的时候也遇到了这种错误,但是加上127.0.0. ...
linux tomcat日志错误Cannot run without an instance id & java.net.UnknownHostExceptio -
lg327969713:
wx_hello 写道你好,请教下,这个链接要配置ODBC数据 ...
Java连接FoxPro6.0数据库(测试)
环境(Oracle Database 10g Enterprise Edition Release 10.2.0.1.0)
工作中碰到如此问题,业务特殊需求,如何实现动态的行转换成动态的列,源数据如,
11行数据:
col
a
b
c
d
e
f
g
h
i
j
k
转成自定义的列表数据,如转成四列(变成了三行四列,四列可以做到动态设置):
col1 col2 col3 col4
a b c d
e f g h
i j k
针对Oracle 10g特殊管道函数pipe row(),这里提供一种实现方式,以资学习记录。
按照顺序创建SQL脚本、模拟数据。
---create custom object CREATE or replace TYPE unit_type AS OBJECT ( unit1 VARCHAR2(50) ,unit2 VARCHAR2(50) ,unit3 VARCHAR2(50) ,unit4 VARCHAR2(50) ); ---create table object by type Object CREATE TYPE unit AS TABLE OF unit_type; ---create table create table t_unit (unitname varchar2(50)); ---insert into data begin insert into t_unit (UNITNAME) values ('a'); insert into t_unit (UNITNAME) values ('b'); insert into t_unit (UNITNAME) values ('c'); insert into t_unit (UNITNAME) values ('d'); insert into t_unit (UNITNAME) values ('e'); insert into t_unit (UNITNAME) values ('f'); insert into t_unit (UNITNAME) values ('g'); insert into t_unit (UNITNAME) values ('h'); insert into t_unit (UNITNAME) values ('i'); insert into t_unit (UNITNAME) values ('j'); insert into t_unit (UNITNAME) values ('k'); insert into t_unit (UNITNAME) values ('l'); insert into t_unit (UNITNAME) values ('m'); insert into t_unit (UNITNAME) values ('n'); insert into t_unit (UNITNAME) values ('o'); insert into t_unit (UNITNAME) values ('p'); insert into t_unit (UNITNAME) values ('r'); insert into t_unit (UNITNAME) values ('s'); insert into t_unit (UNITNAME) values ('t'); insert into t_unit (UNITNAME) values ('u'); insert into t_unit (UNITNAME) values ('v'); insert into t_unit (UNITNAME) values ('w'); insert into t_unit (UNITNAME) values ('x'); insert into t_unit (UNITNAME) values ('y'); insert into t_unit (UNITNAME) values ('z'); insert into t_unit (UNITNAME) values ('q'); insert into t_unit (UNITNAME) values ('1'); insert into t_unit (UNITNAME) values ('2'); insert into t_unit (UNITNAME) values ('3'); insert into t_unit (UNITNAME) values ('4'); commit; end; ---check data select * from t_unit; ---create pipe function , important step create or replace function autolinefeed return unit PIPELINED as temp_str varchar2(32767):=''; temp_index number:=0; temp_count number:=0; temp_sum number:=0; temp_unit1 varchar2(50); temp_unit2 varchar2(50); temp_unit3 varchar2(50); temp_unit4 varchar2(50); begin select count(*) into temp_sum from t_unit; if temp_sum<=0 then pipe row(null); return; end if; for v_unit in (select * from t_unit) loop temp_count:=(temp_count+1); if (mod(temp_count,4)=1) then temp_unit1 :=v_unit.unitname; elsif (mod(temp_count,4)=2) then temp_unit2 :=v_unit.unitname; elsif (mod(temp_count,4)=3) then temp_unit3 :=v_unit.unitname; else temp_unit4 :=v_unit.unitname; end if; if (mod(temp_count,4)=0) then pipe row(unit_type(temp_unit1,temp_unit2,temp_unit3,temp_unit4)); else if (temp_sum=temp_count) then if (mod(temp_count,4)=1) then pipe row(unit_type(temp_unit1,'','','')); elsif (mod(temp_count,4)=2) then pipe row(unit_type(temp_unit1,temp_unit2,'','')); elsif (mod(temp_count,4)=3) then pipe row(unit_type(temp_unit1,temp_unit2,temp_unit3,'')); else pipe row(unit_type(temp_unit1,temp_unit2,temp_unit3,temp_unit4)); end if; end if; end if; end loop; exception when others then pipe row(null); end; --data effect SQL> select * from table(autolinefeed); UNIT1 UNIT2 UNIT3 UNIT4 ---------- ---------- ---------- ---------- a b c d e f g h i j k l m n o p r s t u v w x y z q 1 2 3 4 已选择8行。
图片效果:
发表评论
-
mongodb在Java环境下简单使用
2015-09-16 18:42 1298mongodb在Java环境下简单使用,简单记录,简单增删查 ... -
Redis在java中批量操作数据的更新
2014-12-20 21:39 3288背景:同事说Redis在插入数据时,同样存在插入速度慢,只 ... -
WindowXP与Window2003设置MYSQL主从备份
2014-09-16 10:24 936公司要求mysql备份机制,最近结合项目和网上学习资料,实现 ... -
mysql的collation区分大小写设置
2013-03-18 00:03 2752... -
Oracle 存储过程处理存储过程游标集
2013-02-05 10:34 845好久没有写任何东西了,今天补充随便写一点,刚好以前同事问到 ... -
DB2 嵌套动态游标存储过程_记录
2012-06-15 16:45 1895DB2(V9.7) 嵌套动态游标存储过程,已经学习使用DB2近 ... -
Oracle 10g Dynamic report column(eg)
2012-05-14 18:59 929今日(2012-05-14)在群信息里(Oracle ... -
获取指定日期间隔简易一例
2011-12-27 17:58 959今日(2011-12-27)一哥们(Oracle 10. ... -
Installing Oracle 9i on RedHat Linux 7.1, 7.2, 7.3, 8.0, 9, Red Hat Advanced Ser
2011-11-24 10:01 0Werner Puschitz Sr. AIX/Li ... -
数据库连续区间汇总(求和)一例,rownum伪列利用(原创)
2011-07-18 13:34 1581环境(Oracle Database 10g Ent ... -
oracle job使用详解及job不运行的检查方法(转载)
2011-02-14 10:11 1742oracle job使用 ... -
Oracle 字符集的查看和修改(转)
2011-01-28 12:46 1032一、什么是Oracle字符集 Oracle字 ... -
EXP命令:参数、举例、注意事项、问题与解决
2010-05-12 11:09 0(http://space.itpub.net/2365085 ... -
oracle 物化视图(转载)
2010-04-13 23:20 0(http://www.blogjava.net/beauty ... -
Oracle SYS_CONTEXT Function
2010-03-15 21:19 1495Oracle SYS_CONTEXT Function Ver ... -
Rman学习笔记记录
2010-02-25 17:15 1855记录前段时间学习ORACLE10g (10.2.0 )RMA ... -
Oracle错误:ORA-00604处理
2009-11-11 17:40 4407ORACLE性能调优篇---Oracle错误:ORA-0060 ... -
oracle中表数据横向转纵向显示(再一题)
2009-09-25 17:22 0最近工作又碰到了在Oracle(10.2.0)使用数 ... -
ORACLE查询笔记(mysql)
2009-06-09 09:30 1590好记性当不得烂笔头,把工作、学习中一点东西作个笔记... ... -
ORACLE RMAN备份的脚本配置[转载]
2009-05-24 16:33 2168一: 备份; 1:连接目标数据库: rman rman& ...
相关推荐
列转行(Pivot)和行转列(Unpivot)是两种基本操作,可以将数据按照不同的维度进行组织。传统的列转行方法通常涉及`DECODE`或`CASE`函数与聚合函数如`MAX`或`MIN`的结合,但这些方法可能在处理大量数据时对性能造成...
此外,Oracle数据库从12c版本开始支持IDENTITY属性,这是一种更为简便的方法来实现自动增长列,可以直接在列定义时指定。IDENTITY属性可以确保列的值是唯一的,并且在插入新记录时会自动递增。使用IDENTITY属性的...
在 Oracle 数据库中,触发器是一种特殊的数据库对象,用于在特定事件发生时执行特定操作。在本示例中,我们创建一个名为 TR_EXCELFILE_LINE 的触发器,用于在插入数据时自动将 F_ID 字段值加 1。 创建触发器的 SQL ...
描述中提到的“动态行转不定列”和“自动转换”暗示了这是一个处理不固定数量列的解决方案,而“列数限制为oracle限制”意味着这个方法考虑到了Oracle对最大列数的规定。 Oracle提供了几种方法来实现行转列,其中最...
### Oracle自动增长列知识点 在Oracle数据库中,实现自动增长列的功能主要依赖于`SEQUENCE`对象。通过创建一个序列(SEQUENCE),可以方便地为表中的某列自动生成唯一的值,这对于主键或者需要唯一标识符的场景非常...
当需要自动为新插入的行生成唯一的ID时,触发器是一种常用的技术手段。本文将深入探讨如何使用Oracle触发器来实现行ID的自增加。 首先,我们得了解什么是触发器。在Oracle中,触发器是一种数据库对象,它可以在特定...
这一步骤对于将BLOB转换为CLOB至关重要,因为CLOB本质上是一种字符数据类型,而不能直接与二进制数据交互。通过使用`UTL_RAW.CAST_TO_VARCHAR2`,我们可以将BLOB数据转换为中间的VARCHAR2格式,然后进一步转换为CLOB...
下面将详细介绍 Oracle 数据库主键自动生成的实现方法和相关知识点。 序列(Sequence) 序列是一种数据库对象,它可以生成一系列唯一的数字值,常用来生成主键值。在 Oracle 数据库中,可以使用以下语句创建一个...
在Oracle数据库中,存在一种特殊的数据类型被称为“伪列”,这些伪列虽然看起来像是表中的列,但实际上它们并不存储任何数据,而是由数据库动态生成的。本文将重点介绍两种常用的伪列——rownum和rowid,并探讨它们...
触发器是一种数据库对象,它可以在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句或PL/SQL代码块。在这个场景中,我们讨论的是如何利用Oracle触发器来实现二维码的生成与存储。 首先...
在Oracle数据库中,伪列(Pseudocolumn)并非真正意义上的列,而是一种特殊的数据库对象,它看起来像表中的一个列,但实际上并不存储数据。Oracle提供了一些内置的伪列供用户使用,如`ROWID`和`ROWNUM`等,这些伪列...
在Oracle数据库中,实现自增长列的功能是一种常见的需求,尤其在设计主键或者唯一标识符时。这通常用于确保每条记录都有一个唯一的、连续的编号。在给定的文件中,通过创建表、序列和触发器的方式实现了这一功能。...
"Oracle自动建立表分区脚本"提供了一种高效的方法来实现这一目标,尤其适用于处理大量数据的企业级应用。 1. **表分区的基本概念**:表分区是将一个大表逻辑上划分为多个较小的部分,每个部分称为一个分区。每个...
序列(sequence)是一种独立的对象,可以用于生成连续的整数值,常用于为主键提供唯一的值。 #### 创建序列(sequence) 在Oracle中创建一个序列(sequence)非常简单,只需要执行一条SQL语句即可。例如,为`DEPARTMENT`...
触发器是一种在特定事件(如INSERT、UPDATE、DELETE)发生时自动执行的数据库对象,常用于实现业务规则或审计功能。 10. **游标**: 游标允许程序逐行处理查询结果,常在PL/SQL中使用,对于处理大量数据或需要...
序列是一种用于生成一系列数值的对象,可以用于自动为主键生成唯一的值。 ```sql CREATE SEQUENCE emp_sequence INCREMENT BY 1 -- 每次增加的值 START WITH 1 -- 起始值 NOMAXVALUE -- 最大值,这里表示没有上限 ...
Oracle Advanced Security 是 Oracle Database 12c 中的一种安全解决方案,旨在保护数据库免受非法访问和数据泄露的威胁。通过 Oracle Advanced Security,可以实现加密和编辑,以保护敏感数据免受恶意攻击。 ...
序列是 Oracle 中的一种机制,可以生成连续的数字序列。序列可以用来生成唯一的标识符、自动增长的数字等。 知识点三: 创建序列 创建序列的语法是:CREATE SEQUENCE 序列名称 [MINVALUE 最小值] [MAXVALUE 最大值...
在IT行业中,C++是一种强大的编程语言,常用于构建高性能的应用程序,而Oracle则是一款广泛使用的商业级关系型数据库管理系统。将C++与Oracle结合,可以实现高效且灵活的数据库操作。本文将深入探讨如何使用C++进行...