SQL能否在一个提交中更新多条记录??

Nirvana0 2004-12-21 09:47:56
小弟有个问题:
比如
update tblA set Age='20' where Name='AA';
update tblA set Age='30' where Name='BB';
update tblA set Age='40' where Name='CC';
这三条语句能否改成,访问数据库一次就完成呢?
...全文
201 点赞 收藏 15
写回复
15 条回复
langmanhufei 2004年12月23日
默认值是null还是age看具体情况了
回复 点赞
lwq_soft 2004年12月23日
其实为了适应开发的要求 最好把它放到一个存储过程中这样可以避免很多问题
如 create or replace procedure updatetblA(v_Age1 in varchar2,v_Age2 in varchar2,v_Age3 in varchar2)
begin
update tblA set Age=v_Age1 where Name='AA';
update tblA set Age=v_Age2 where Name='BB';
update tblA set Age=v_Age3 where Name='CC';
/*如果要求必须都执行的话加上
commit*/
end;

回复 点赞
zhpsam109 2004年12月22日
up!
回复 点赞
wangybyangxr 2004年12月22日
谢谢ORARichard(没钱的日子......)的提醒。
回复 点赞
yingqing 2004年12月22日
update tblA set Age = DECODE(NAME,'AA','20', 'BB','30', 'CC','40', '')
回复 点赞
NinGoo 2004年12月22日
千万不要犯不加条件的错误,不然哭都来不及,呵呵
回复 点赞
ORARichard 2004年12月22日
update tblA set Age = DECODE(NAME,'AA','20', 'BB','30', 'CC','40', Age)

to libin_ftsafe(子陌红尘)
你这句话的确没错了,不过如果表中有百万条数据,那岂不是要更新百万条了,最好的方法还是一楼的

to wangybyangxr(王永斌)
你写的第二句还是有问题,你参照libin_ftsafe(子陌红尘)的句子再想想
回复 点赞
子陌红尘 2004年12月22日
update tblA set Age = DECODE(NAME,'AA','20', 'BB','30', 'CC','40', Age)
回复 点赞
etheltim 2004年12月22日
支持onejune4450(中文字符)
回复 点赞
yxxx 2004年12月22日
千万不要犯不加条件的错误,不然哭都来不及,呵呵

没错,我曾经忘写了条件,结果一个关键字段全被更新成一个值了,吐了一天血;(
回复 点赞
liuyi8903 2004年12月21日
赞同ORARichard and onejune4450
回复 点赞
wangybyangxr 2004年12月21日
谢谢ORARichard(没钱的日子......)的提醒。

update tblA set Age = DECODE(NAME,'AA','20', 'BB','30', 'CC','40', '')

最后一个空格表示与前面不匹配的话用 DEFAULT
回复 点赞
ORARichard 2004年12月21日
要用onejune4450(中文字符)的
wangybyangxr(王永斌)的句子少个条件,会造成将NAME非'AA','BB','CC'的AGE更新为NULL
回复 点赞
wangybyangxr 2004年12月21日
update tblA set Age = DECODE(NAME,'AA','20', 'BB','30', 'CC','40')
回复 点赞
onejune4450 2004年12月21日
update tblA set Age=decode(Name,'AA','20','BB','30','CC','40')
where Name in ('AA','BB','CC');
回复 点赞
发动态
发帖子
基础和管理
创建于2007-09-28

7175

社区成员

9.5w+

社区内容

Oracle 基础和管理
社区公告
暂无公告