大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
先看我们的数据:
SQL> select count(1) from dave where cust_tel like ‘0551%’;
https://www.cndba.cn/Dave/article/1485
COUNT(1)
———-
2723
在我们的Dave表里,cust_tel 电话以0551 开头的有2723条记录,现在我们把这些记录换成0556.
我们使用如下方法测试一下:
SQL> select * from v$version; BANNER———————————————————————-Oracle Database 11g Enterprise EditionRelease 11.2.0.1.0 – ProductionPL/SQL Release 11.2.0.1.0 – ProductionCORE 11.2.0.1.0 ProductionTNS for 32-bit Windows: Version 11.2.0.1.0- ProductionNLSRTL Version 11.2.0.1.0 – Production SQL> UPDATE dave SET cust_tel = ‘0556’|| SUBSTR (cust_tel, 5) WHERE cust_tellike ‘0551%’;2723 rows updated. SQL> rollback;Rollback complete. SQL> UPDATE dave SET cust_tel = ‘0556’|| SUBSTR (cust_tel, 5) WHERE cust_telin (select cust_tel from dave where cust_tel like ‘0551%’);2723 rows updated. SQL> rollback;Rollback complete.
写法很多,关键要注意效率问题,尤其是要更新的数据量比较大时。
https://www.cndba.cn/Dave/article/1485
另测试发现Oracle10g 和11g 在语法支持上的一些区别:
https://www.cndba.cn/Dave/article/1485
在Oracle 10g上可以使用如下语法:
BEGIN FOR cl IN (SELECT object_name from d1 WHEREobject_type=’TABLE’) LOOP UPDATE d1 SET object_name = ‘D’ || SUBSTR (object_name, 2) WHERE object_name = cl.object_name; END LOOP;END;
https://www.cndba.cn/Dave/article/1485
但如果在Oracle 11g中使用如下语法:
BEGIN FOR cl IN (SELECT id from dave WHERE cust_tel LIKE ‘0551%’) LOOP UPDATE dave SET cust_tel = ‘0556’ || SUBSTR (cust_tel, 5) WHERE id = cl.id; END LOOP;END;
则会一致处于等待状态。
https://www.cndba.cn/Dave/article/1485
但是在Oracle 11g中,可以使用如下的游标来处理,这种方法也是我们之前的提高的根据rowid 来完成大量的Update操作:
DECLARE CURSOR cur IS SELECT rowid as ROW_ID from dave WHEREcust_tel LIKE ‘0551%’ ORDER BY ROWID; —如果表的数据量不是很大,可以不用 order by rowid V_COUNTER NUMBER;BEGIN V_COUNTER := 0; FOR row IN cur LOOP UPDATE dave SET cust_tel = ‘0556’ || SUBSTR (cust_tel, 5) WHERE ROWID = row.ROW_ID; V_COUNTER := V_COUNTER + 1; IF (V_COUNTER>= 1000) THEN COMMIT; V_COUNTER := 0; END IF; END LOOP; COMMIT;END;
有关这种方法的具体说明参考:
https://www.cndba.cn/Dave/article/1485
——————————————————————————————————-
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
Blog: http://blog.csdn.net/tianlesoftware
https://www.cndba.cn/Dave/article/1485
Weibo: http://weibo.com/tianlesoftware
Skype: tianlesoftware
——-加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请—-
DBA1 群:62697716(满); DBA2 群:62697977(满) DBA3 群:62697850(满)
DBA 超级群:63306533(满); DBA4 群:83829929 DBA5群: 142216823 https://www.cndba.cn/Dave/article/1485
DBA6 群:158654907 DBA7 群:172855474 DBA8群:102954821
版权声明:本文为博主原创文章,未经博主允许不得转载。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/192757.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...