易截截图软件、单文件、免安装、纯绿色、仅160KB

oracle ebs 拆分一列为多行的问题

拆分一列为多行的问题
表数据如下
id,name,code
1,abc,c001/c002/c007
2,efg,c001/c003
3,ttt,c008/c010
怎么能转换成
id,name,code
1,abc,c001
1,abc,c002
1,abc,c007
2,efg,c001
2,efg,c003
3,ttt,c008
3,ttt,c010
SQL> create table h_t(id number ,name varchar2(20),code varchar2(50));表已创建。
SQL> begin
2 insert into h_t values (1, 'abc', 'c001/c002/c007');
3 insert into h_t values (2, 'efg', 'c001/c003');
4 insert into h_t values (3, 'ttt', 'c008/c010');
5 commit;
6 end;
7 /
PL/SQL 过程已成功完成。
SQL> select * from h_t;
ID NAME CODE---------- -------------------- --------------------------------------------------
1 abc c001/c002/c007
2 efg c001/c003
3 ttt c008/c010
SQL> create table h_t_1 as select * from h_t where rownum <1;表已创建。
SQL> declare
2 l_i number;
3 l_p number;
4 l_times number;
5 l_str varchar2(10);
6 begin
7 for x in (select * from h_t) loop
8 l_i := 1;
9 l_times := length(x.code) - length(replace(x.code, '/', '')) + 1;
10 for y in 1 .. l_times loop
11 l_p := l_i;
12 l_i := instr(x.code || '/', '/', l_i) + 1;
13 l_str := substr(x.code, l_p, l_i - l_p - 1);
14 insert into h_t_1 values (x.id, x.name, l_str);
15 end loop;
16 end loop;
17 commit;
18 end;
19 /
PL/SQL 过程已成功完成。
SQL> select * from h_t_1;
ID NAME CODE---------- -------------------- --------------------------------------------------
1 abc c001
1 abc c002
1 abc c007
2 efg c001
2 efg c003
3 ttt c008
3 ttt c010


相关文档:

ORACLE sql语句笔记

windows上存在32bit的限制,如AIX、HP UNIX 等有明确的64BIT OS and ORACLE的版本,32bit oracle可以装在64bit os 上,64 bit oracle不能装在32 bit OS上
oracle是64bit or 32 bit,32bit 通常 SGA有 1.7G 的限制(某些OS的处理或者WINDOWS上有特定设定可以支持到2G以上甚至达到3.7G
如何查出前台正在发出的sql语句:
sele ......

在Oracle下开发Java程序的经典问题解答

 
问题一:如保加载JDBC驱动程序:
 
正常我们加载驱动程序有三个途径:
 
1.Class.forName(String)这想当于classLoader一个String指定的类,在装载时把该驱动程序的静态内容都初始化,其实这时驱动程序类调用了DriverManager.registerDriver(driver)方法。
 
2.使用系统属性:System.getPro ......

SQLServer和Oracle常用函数对比


数学函数
在oracle 中distinct关键字可以显示相同记录只显示一条
  1.绝对值
  S:select abs(-1) value
  O:select abs(-1) value from dual
  2.取整(大)
  S:select ceiling(-1.001) value
  O:select ceil(-1.001) value from dual
  3.取整(小)
  S:select floor(-1.001) value ......

sqlserver:openrowset / oracle:table/view@dblink名

只是sqlserver 提供的远程数据访问函数;  在本地sqlserver 中取外部数据源数据时候可用;
对连接本地 oracle 操作远程 oracle 不能使用; 测试: pl/sql 中使用:
select * from openrowset(................); 无效!!!!!!!!!!!!!!
在oracle 中需要访问远程数据,需要建立一连接远程oracle 的 dblink ;
再用如下方 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号