我在oracle中有一个表,其中所有列的行都必须使用起始值500更新并递增1.
我试图在网上找到类似的东西但却无法获得任何有用的东西. oracle和PL / sql不是我的专长.任何帮助,将不胜感激.
解决方法
我不会使用PL / sql,因为它可以在纯sql中完成.
您可以使用以500开头并以1递增的SEQUENCE.
例如,
建立
sql> DROP SEQUENCE s ; Sequence dropped. sql> sql> CREATE SEQUENCE s START WITH 500 INCREMENT BY 1; Sequence created. sql> sql> DROP TABLE t PURGE; Table dropped. sql> sql> CREATE TABLE t AS SELECT LEVEL id FROM dual CONNECT BY LEVEL < =20; Table created. sql> sql> SELECT * FROM t; ID ---------- 1 2 3 4 5 6 7 8 9 10 11 ID ---------- 12 13 14 15 16 17 18 19 20 20 rows selected. sql>
现在,让我们用序列更新表.
sql> UPDATE t SET ID = s.nextval; 20 rows updated. sql> sql> SELECT * FROM t; ID ---------- 500 501 502 503 504 505 506 507 508 509 510 ID ---------- 511 512 513 514 515 516 517 518 519 20 rows selected. sql>
因此,您已更新所有行,序列以500开头并递增1.