◆关于FOR .. IN ..LOOP ◆
CURSOR cur_d IS
select * from NFCKLST_a
..................................................
FOR row_set IN cur_d LOOP
insert into NFCKLST_d VALUES(
row_set.ACCATRBT,
row_set.ACCNO,
row_set.CURRTYPE,
row_set.LSTPRTB,
row_set.BUSIDATE,
row_set.AMOUNT,
..............................................
)
====================================================
NFCKLST_a和NFCKLST_d结构完全一致,字段有很多,每个列举很麻烦。
是否有省略的写法?
例如:insert into NFCKLST_d VALUES( row_set.*) --当然我知道这样不行
问题点数:20、回复次数:5Top
1 楼zzwind5(★★★★★)回复于 2005-11-21 20:54:39 得分 20
declare
CURSOR cur_d IS select * from NFCKLST_a;
tab cur_d%rowtype;
begin
open cur_d;
loop
exis when cur_d%notfound;
insert into NFCKLST_d
values tab;
end loop;
close cur_d;
end;
ORACLE 9i 以上版本支持这种用法Top
2 楼zzwind5(★★★★★)回复于 2005-11-21 20:55:52 得分 0
漏 fetch into 了
declare
CURSOR cur_d IS select * from NFCKLST_a;
tab cur_d%rowtype;
begin
open cur_d;
loop
fetch cur_d into tab;
exis when cur_d%notfound;
insert into NFCKLST_d
values tab;
end loop;
close cur_d;
end;Top
3 楼wgsasd311(自强不息)回复于 2005-11-22 09:13:14 得分 0
NFCKLST_a和NFCKLST_d结构完全一致,字段有很多,每个列举很麻烦。
是否有省略的写法?
========>当然有了。
insert into NFCKLST_d values row_setTop
4 楼sbaz(万神渡劫)回复于 2005-11-22 11:21:57 得分 0
insert into NFCKLST_d
select * from NFCKLST_a
Top
5 楼wgh166(涌金水牛)回复于 2005-11-23 19:22:59 得分 0
wgsasd311(自强不息)\sbaz(万神渡劫) () 信:
这个我知道啊!关键是cur_d 不是如此简单的东西,否则不用写存储过程了。
V_name char(10);
V_Accno char(13);
V_Start Date;
V_End DAte;
CURSOR cur_d IS
select * from NFCKLST_a
where account=V_accno and name like V_name
and date between V_Start and V_End
......................................................
Top




