【发布时间】:2017-03-09 17:27:13
【问题描述】:
我在 Oracle 中有一张这样的表:
+---------------------------------------------------------------+
| KA_ACTEUR | NIF | NIF_EXT | NAME | LASTNAME |
+---------------------------------------------------------------+
| AAAAAAAA1 | 123456789X | 1 | JHON | DOE |
| AAAAAAAA2 | 123456789X | 2 | JHON | DOE |
| AAAAAAAA3 | 123456789X | 3 | JHON | DOE |
| AAAAAAA34 | 123456789X | | JHON | DOE |
| AAAAA6AA5 | 123456789X | | JHON | DOE |
+---------------------------------------------------------------+
The field NIF is the Primary key
我想更新字段 EXT 为空的条目,继续序列 (max+1)。 我使用了以下代码,但是条目很多,并且需要很多时间。
DECLARE
CURSOR clientCursor IS
SELECT * from my_table
where nif_ext is null;
BEGIN
FOR client IN clientCursor LOOP
UPDATE my_table
SET nif_ext = (select nvl(max(nif_ext)+1,1) from my_table where nif=client.nif)
WHERE ka_acteur=client.ka_acteur;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END;
您知道解决此问题的另一种方法吗? 谢谢。
【问题讨论】:
-
NIF 是主键(唯一且不为空)还是您想要计算的感兴趣的字段?
-
ka_acteur 是主键,
-
我的错@a_horse_with_no_name
标签: sql oracle sql-update