日期:2014-05-16  浏览次数:21241 次

PL/SQL 遍历某一行数据的每一列
首先我已经找了好久这个问题的答案了,知道有一种方法可以实现

select b.* from (select rownum as num,b.* from table1 as b) where num = 1

这个就是可以根据列名组成动态sql查询出某一行的某一列的值

但是,但是,这样的话数据量大了会很慢很慢,想象一下,10列 * 3000行 就是3W个值,我得每次查询某行某列的值都必须select一回,大大浪费了时间

现在的情况是,我已经有了列名的集合,可以循环得到每列的列名,但是注意,列名是保存在变量中的,
如果通过游标去控制数据查询,游标每指向一行,该行的数据只能通过A.col_name这种方式获取,col_name是已知的列名,关键是我这里列名是存储在变量中的! 

有没有一种思路,可以查询10*3000这种矩阵数据时,速度快些,循环的话,一行一行来,每到一行再遍历每一列,注意注意,该数据集有多少列每列都叫什么名字是动态的。
------解决方案--------------------
这种处理方式值得商榷啊,就相当于匿名遍历,很难解决。这是在哪里遍历?
------解决方案--------------------
很赞成楼主的想法,这种循环就是慢,还不如用游标呢
------解决方案--------------------
那如果使用数据字典呢??

------解决方案--------------------
列名固定,无论有多少:

for c in (select ...) loop
  c.列1......;
  c.列2......;
  c.列3......;
  ......
  c.列n......;

end loop;

列名可变

用 dbms_sql 包。