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==============
为什么只结果与要更新的不一样。只执行了最后一句?
那不就覆盖更新么
执行的结果 要是 这三句的结果
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;