create  table stu
(
       stuname varchar2(100),
       stuage varchar2(10),
       stuadd varchar2(100)
);
insert into stu values(1,2,3);
insert into stu values(2,'YES',5);
insert into stu values(2,'YES',6);
insert into stu values(2,'YES',7);
insert into stu values(5,'YES',2);
create or replace  procedure p_stu(s varchar2) is
       type cur is ref cursor;
       m_cur cur;
       vv varchar2(100);
       sadd varchar2(100);
begin
       open m_cur for 'select stuadd  from stu where STUNAME=2';
       loop
            fetch m_cur  into sadd;
            exit when m_cur%notfound;
            vv:= 'update stu set stuadd='||sadd||' ,stuage=decode(stuage,'''||s||''',1) where STUNAME=2';
            DBMS_OUTPUT.put_line(vv||'==============');
            execute immediate vv; 
       end loop;
       close m_cur;
end;
这是拼接出来的语句
update stu set stuadd=5 ,stuage=decode(stuage,'YES',1) where STUNAME=2==============
update stu set stuadd=6 ,stuage=decode(stuage,'YES',1) where STUNAME=2==============
update stu set stuadd=7 ,stuage=decode(stuage,'YES',1) where STUNAME=2==============
为什么只结果与要更新的不一样。只执行了最后一句?