我在循环中要向数据表epare_crewisview插入4条记录,但是每次总是插入5条,而且4、5两条记录是一样的,这是怎么回事啊
create or replace package body MYPREPARENEW is
procedure addCrewBoard1(v_tsk in varchar2, v_userId in varchar2, v_userName in varchar2, v_content in varchar2)
is
CURSOR receiver(tskID VARCHAR2) IS SELECT epc.username FROM epare_crewschedule epc where epc.tsk=tskID;
v_tmpname varchar2(80);
v_id int;
begin
select crewboardseq.nextval into v_id from dual;
insert into epare_crewboard(id, tsk, userid, username, content) values(v_id, v_tsk, v_userId, v_userName, v_content);
begin
open receiver(v_tsk);
LOOP
fetch receiver into v_tmpname;
if(v_tmpname=v_userName)then
insert into epare_crewisview(CREWBOARDID, TSK, SENDERNAME, RECEIVERNAME, ISVIEW)values(v_id, v_tsk, v_userName, v_tmpname,1);
else
insert into epare_crewisview(CREWBOARDID, TSK, SENDERNAME, RECEIVERNAME, ISVIEW)values(v_id, v_tsk, v_userName, v_tmpname,0);
end if;
exit when receiver%NOTFOUND;
end loop;
close receiver;
end;
end;
end MYPREPARENEW;
create or replace package body MYPREPARENEW is
procedure addCrewBoard1(v_tsk in varchar2, v_userId in varchar2, v_userName in varchar2, v_content in varchar2)
is
CURSOR receiver(tskID VARCHAR2) IS SELECT epc.username FROM epare_crewschedule epc where epc.tsk=tskID;
v_tmpname varchar2(80);
v_id int;
begin
select crewboardseq.nextval into v_id from dual;
insert into epare_crewboard(id, tsk, userid, username, content) values(v_id, v_tsk, v_userId, v_userName, v_content);
begin
open receiver(v_tsk);
LOOP
fetch receiver into v_tmpname;
if(v_tmpname=v_userName)then
insert into epare_crewisview(CREWBOARDID, TSK, SENDERNAME, RECEIVERNAME, ISVIEW)values(v_id, v_tsk, v_userName, v_tmpname,1);
else
insert into epare_crewisview(CREWBOARDID, TSK, SENDERNAME, RECEIVERNAME, ISVIEW)values(v_id, v_tsk, v_userName, v_tmpname,0);
end if;
exit when receiver%NOTFOUND;
end loop;
close receiver;
end;
end;
end MYPREPARENEW;
fetch receiver into v_tmpname;
exit when receiver%NOTFOUND;
if(v_tmpname=v_userName)then
insert into epare_crewisview(CREWBOARDID, TSK, SENDERNAME, RECEIVERNAME, ISVIEW)values(v_id, v_tsk, v_userName, v_tmpname,1);
else
insert into epare_crewisview(CREWBOARDID, TSK, SENDERNAME, RECEIVERNAME, ISVIEW)values(v_id, v_tsk, v_userName, v_tmpname,0);
end if;
end loop;
是这种循环方式的必须的格式呢,原来他也可以来回移动哦,谢谢