oracle列转行方法总结
方法一:
----------------------------------------------------------------
---Muti-row to line(col2row)
----------------------------------------------------------------
create or replace type str_tab is table of varchar2(20);
/
grant all on str_tab to public;
create public synonym str_tab for str_tab;
create or replace function col2row(pv in str_tab) return varchar2
is
ls varchar2(4000);
begin
for i in 1..pv.count loop
ls := ls || pv(i);
end loop;
return ls;
end;
/
grant execute on col2row to public;
create public synonym col2row for col2row;
----------------------------------------------------------------
--multi column,convert one column base on another column, for example
----------------------------------------------------------------
create table t(id number,name varchar2(10));
insert into t values(1,'Joan');
insert into t values(1,'Jack');
insert into t values(1,'Tom');
insert into t values(2,'Rose');
insert into t values(2,'Jenny');
---------------------------------------------------------------
SQL(c3dev)>select * from t;
ID NAME
---------- ----------
1 Joan
1 Jack
1 Tom
2 Rose
2 Jenny
---------------------------
--column to row
---------------------------
SQL(c3dev)>column names format a80;
SQL(c3dev)>set line 120
SQL(c3dev)>select t0.id,
2 col2row(cast(multiset(select name from t where t.id = t0.id) as str_tab)) names
3 from (select distinct id from t) t0;
ID NAMES
---------- --------------------------------------------------------------------------------
&nbs
相关文档:
作者 Haidong Ji 翻译 GoodKid
我们当中的大部分人工作在一个单一的 RDBMS 系统中,如 MSSQL, Oracle, or IBM DB2。然而,我们日益感觉到,我们正处于不同的数据库环境当中并且需要解决数据的互用性问题。
尽管主要的 RDBMS 厂商试图去遵循关系数据库模型原理,并且用非常小的差异去实现它们。另外,几乎主要的 ......
oracle变量类型
标量类型
varchar2(n) 用于定义可变长度的字符串 n用于指定字符串的最大长度 其最大值为32767字节 必须指定n
char(n) 用于定义固定长度的字符串 其中n用于指定字符串的最大长度,其最大值为32767 如果不指定n 默认是1
number(p,s)该数据类型用于定义固定长度的整数和浮点 ......
(1) varchar2(n):该数据类型用于定义可变长度的字符串,其中 n 用于指定字符串的最大长度,其最大值为 32767 字节。当使用该数据类型定义变量是,必须注意,在PL/SQL块中使用该数据类型操纵varchar2表列时,其数值的长度不应该超过 4000 字节。
......
PB自带的REPLACE语句用着总有些不习惯。今天同事在做数据迁移中,用到替换功能,根据不同的登录用户,选择该用户下的表。所以,我就用ORACLE的函数来实现它。其实挺简单的,就是一个PB动态SQL语句的例子而已。下面是个例子,SQL语句自已拼装好。注意拼装的SQL语句末尾不要习惯的加“; ......
首先来复习一下行级锁的机制。当一个事务开始时必选先申请一个TX锁(保护回滚段、回滚数据块),只有先申请到回滚段资源后才能开始一个事务,才能进行DML操作。这个动作完成后,事务就可以开始修改数据了。当修改数据表的记录时,遵循以下的操作顺序。
1.获得表的TM锁(保护事务执行过程中其它用户不能修改表结构)
2.在 ......