oracle 不用游标进行遍历,自己写的大家看对不对?

aaronglg 2013-01-23 05:06:44
原表是这样的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呢?
...全文
154 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
badiku 2013-01-29
  • 打赏
  • 举报
回复
where rownum = @counter 听说 rownum后面的比较符号只能用小于号 < 如果用等于号的话,只用是等于1, = 1
aaronglg 2013-01-23
  • 打赏
  • 举报
回复
没太看懂你的代码。。 我太弱了。。 能注释下吗。。
善若止水 2013-01-23
  • 打赏
  • 举报
回复
你这肯定不对,你把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;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧