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

oracle 不用游标进行遍历,自己写的大家看对不对?
原表是这样的way( source,destination);

首先创建临时表:

create global temporary table t1
( id int;
source1 char(20);
destination1 char(20);
)

@counter int;//创建技术变量
@sum/原表总行数
set @counter = 1;

select counter(source)
into @sum
from way;
//总行数
@source char(20)
@destination char(20)

//循环读取原表的列,并将序号及原表的每一行输入至新表
while @counter <= @sum
loop
select source,destination
into @source,@destination
where rownum = @counter
insert into t1(id,source1,destination1)
values( @counter,@source,@destination)

end loop;

之前看的rownum是自增关键字,不知道这么用对不对?

如果不对的话请问怎么用sequence呢?

------解决方案--------------------
你这肯定不对,你把rownum想的太神奇了。
你得先借助rownum,把每行的序号求出来。然后再用循环,注意,循环体内得有变量
FOR I_ALL IN 1..ALL_ROWNUM LOOP
select ....
  FROM (SELECT T.*,ROWNUM RN FROM DW_TICKET_NEW T where t.statice_time=II_DATE)
      WHERE RN=I_ALL;