日期:2014-05-17  浏览次数:21002 次

大横表插纵表怎么办,等高手

table1:
产品id 产品颜色 产品型号 是否智能
1111 red t1 是
1112 blue t2 否
1113 green t3 是


table2:
产品id 参数名称 参数值
1111 产品颜色 red
1112 产品颜色 blue
1113 产品颜色 green
1111 产品型号 t1
1112 产品型号 t2
1113 产品型号 t3
1111 是否智能 是
1112 是否智能 否
1113 是否智能 是

将横表table1插入纵表table2,效果如table2,有人给我脚本如下:
select 产品id,'产品颜色' 参数名称,产品颜色 参数值 from table
union all  
select 产品id,'产品型号',产品型号 参数值 from table
union all  
select 产品id,'是否智能',是否智能 参数值 from table


问题似乎解决,但难过的是我的table1有400多列,不可能union all 400多个select吧。。。很急,哪位大侠能给个解决方案,在线等哦。。。。。。




------解决方案--------------------
部门内部调整,没心思写代码了,写个思路,试试看行不行。
/*
思路:
从系统字段表中获取字段名称列表
SELECT * FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = 'TABLENAME'
动态生成SQL语句
strCursorSql varchar2(32700) := '';
--游标相关
TYPE myref IS REF CURSOR;
cur myref;
strCursorSql := 'select * from TABLENAME';
OPEN cur FOR strCursorSql;
LOOP
Fetch cur into secondFieldValue;
Exit when cur%notfound;
dbms_output.put_line('INSERT INTO TABLE2 SELECT...' );
END LOOP;
循环插入相应数据
执行生成的INSERT语句
*/