建表:
create table test3(text varchar2(200));数据:
insert into test3 values('a.101'||chr(10)||'b.工具');
insert into test3 values('a.102'||chr(10)||'b.水果'||chr(10)||'b.餐具');
insert into test3 values('a.103'||chr(10)||'b.时装'||chr(10)||'b.家具'||chr(10)||'b.电器');表记录:
SQL> select * from test3;TEXT
--------------------------------------------------------------------------------
a.101
b.工具a.102
b.水果
b.餐具a.103
b.时装
b.家具
b.电器试用一句SQL实现将其转换成如下结果集(可以不考虑性能问题):柜台号 销售商品
101 工具
102 水果
102 餐具
103 时装
103 家具
103 电器
create table test3(text varchar2(200));数据:
insert into test3 values('a.101'||chr(10)||'b.工具');
insert into test3 values('a.102'||chr(10)||'b.水果'||chr(10)||'b.餐具');
insert into test3 values('a.103'||chr(10)||'b.时装'||chr(10)||'b.家具'||chr(10)||'b.电器');表记录:
SQL> select * from test3;TEXT
--------------------------------------------------------------------------------
a.101
b.工具a.102
b.水果
b.餐具a.103
b.时装
b.家具
b.电器试用一句SQL实现将其转换成如下结果集(可以不考虑性能问题):柜台号 销售商品
101 工具
102 水果
102 餐具
103 时装
103 家具
103 电器
解决方案 »
- 解释“TYPE dept_table_type IS TABLE OF departments.department_name%TYPE INDEX BY PL
- 在网页中怎样连接oracle数据库?
- 请教一个数据库设计的问题(很简单的),大家帮帮忙
- ORACLE返回CLOB大对象速度问题
- 指定表的rowid格式转换
- 求助:请问怎么把多个表的建表语句导到sql脚本中?
- 帮忙看看这段PROC代码有什么问题?
- 导入dmp文件出现错误:不支持要求的字符集转换(从类型1到852)
- oracle 插入数据的问题
- Oracle+PHP 按照这样方式搭建【游戏管理平台】的【数据库】如何优化?
- 菜鸟提问:数据和表的分析过程或分析后用不用重启服务,在分析过程中要注意什么问题,用停掉应用吗?
- 见鬼了,这个结果怎么不对的……
1 101 工具
2 102 水果
3 102 餐具
4 103 时装
5 103 家具
6 103 电器CREATE TABLE AAAbbb(GT_NO VARCHAR2(10), GOODS VARCHAR2(50))
create or replace procedure temp000000 is V_GT VARCHAR2(10);
V_goods VARCHAR2(50);
BEGIN_N NUMBER;
LEN_N NUMBER;
END_N NUMBER;
pos_n NUMBER;
pos_nl NUMBER;
BEGIN
--execute immediate 'CREATE TABLE AAAbbb(GT_NO VARCHAR2(10), GOODS VARCHAR2(50))';
FOR CUR IN (SELECT * FROM test3) LOOP
BEGIN_N := 6;
END_N := 1;
LEN_N := LENGTH(CUR.TEXT);
V_GT := SUBSTR(CUR.TEXT, 3, 3);
while (BEGIN_N < LEN_N) loop
SELECT INSTR(CUR.TEXT, 'b', BEGIN_N, END_N) into pos_n FROM DUAL;
SELECT INSTR(CUR.TEXT, chr(10), pos_n, END_N) into pos_nl FROM DUAL;
if pos_n != 0 then
if pos_nl = 0 then
select substr(CUR.TEXT, pos_n + 2, LEN_N - pos_n - 1)
into V_goods
from DUAL;
BEGIN_N := LEN_N;
else
select substr(CUR.TEXT, pos_n + 2, pos_nl - pos_n - 2)
into V_goods
from DUAL;
BEGIN_N := pos_nl;
end if;
insert into AAAbbb values (V_GT, V_goods);
commit;
else
BEGIN_N := LEN_N;
end if;
end loop;
END LOOP;
end temp000000;
select * from AAAbbb;
IS
V_SQL VARCHAR2(100);
V_TEST TEST2%ROWTYPE;
V_MC TEST2.MC%TYPE;
CURSOR TEST2_CUR IS SELECT * FROM TEST2;
BEGIN
OPEN TEST2_CUR;
FETCH TEST2_CUR INTO V_TEST;
WHILE TEST2_CUR%FOUND LOOP
SELECT V_TEST.MC INTO V_MC FROM TEST2 WHERE ID=V_TEST.ID;
WHILE INSTR(V_MC,',')>0 LOOP
V_SQL:='INSERT INTO TEST22 VALUES ('''||V_TEST.ID||''','||''||SUBSTR(V_MC,1,INSTR(V_MC,',')-1)||''||')';
EXECUTE IMMEDIATE V_SQL;
COMMIT;
V_MC:=SUBSTR(V_MC,INSTR(V_MC,',')+1);
END LOOP;
V_SQL:='INSERT INTO TEST22 VALUES('''||V_TEST.ID||''','||''||V_MC||''||')';
EXECUTE IMMEDIATE V_SQL;
COMMIT;
FETCH TEST2_CUR INTO V_TEST;
END LOOP;
CLOSE TEST2_CUR;
END PR_TEST2;