游标循环更新表的时候限制条件无效
以下是代码declaretypejinweiisrecord(xmvarchar2(22),jibengznumber,jiangjinnumber,shifagznum...
以下是代码
declare
type jinwei is record(
xm varchar2(22),
jibengz number,
jiangjin number,
shifagz number
);
cursor jwrq_cur is
select xm,jibengz,jiangjin,shifagz from zy_gz for update ;
begin
for jinwei in jwrq_cur loop
if jinwei.shifagz<2000 then update zy_gz set
beizhu='低收入';
end if;
end loop;
end;
总是整张表的备注都给我改成低收入,我也是醉了。除非我在update后面加入限制shifagz<2000
但是那样的话,我做这个游标还有啥意义呢……直接update就行了,初学者哈,想不明白这里的意义 展开
declare
type jinwei is record(
xm varchar2(22),
jibengz number,
jiangjin number,
shifagz number
);
cursor jwrq_cur is
select xm,jibengz,jiangjin,shifagz from zy_gz for update ;
begin
for jinwei in jwrq_cur loop
if jinwei.shifagz<2000 then update zy_gz set
beizhu='低收入';
end if;
end loop;
end;
总是整张表的备注都给我改成低收入,我也是醉了。除非我在update后面加入限制shifagz<2000
但是那样的话,我做这个游标还有啥意义呢……直接update就行了,初学者哈,想不明白这里的意义 展开
1个回答
2016-09-09 · 知道合伙人软件行家
renfengjun1986
知道合伙人软件行家
向TA提问 私信TA
知道合伙人软件行家
采纳数:925
获赞数:1553
中国地质调查局特聘数据库专家 CSDN博客专家 百度知道数据库行家 炼数成金版主 想了解更多请关注我的博客:
向TA提问 私信TA
关注
展开全部
cursor jwrq_cur is
select xm,jibengz,jiangjin,shifagz from zy_gz for update ;
begin
for jinwei in jwrq_cur loop
if jinwei.shifagz<2000 then update zy_gz set
beizhu='低收入';
end if;
end loop;
end;
改为
cursor jwrq_cur is
select xm,jibengz,jiangjin,shifagz,rowid from zy_gz for update ;
begin
for jinwei in jwrq_cur loop
if jinwei.shifagz<2000 then update zy_gz set
beizhu='低收入' where rowid=jinwei.rowid ;
end if;
end loop;
end;
加个rowid限制条件就行了。不然每次循环你都会更新一次zy_gz这个表,设置beizhu='低收入'。
select xm,jibengz,jiangjin,shifagz from zy_gz for update ;
begin
for jinwei in jwrq_cur loop
if jinwei.shifagz<2000 then update zy_gz set
beizhu='低收入';
end if;
end loop;
end;
改为
cursor jwrq_cur is
select xm,jibengz,jiangjin,shifagz,rowid from zy_gz for update ;
begin
for jinwei in jwrq_cur loop
if jinwei.shifagz<2000 then update zy_gz set
beizhu='低收入' where rowid=jinwei.rowid ;
end if;
end loop;
end;
加个rowid限制条件就行了。不然每次循环你都会更新一次zy_gz这个表,设置beizhu='低收入'。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询