oracle 如何更新oracle中一列的所有行,起始值为500并在oracle中递增
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/29225376/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
how to update all rows of a column in oracle with a start value of 500 and incrementing in oracle
提问by user2180794
I have a table in oracle of which all rows of a column has to be updated with a starting value of 500 and incrementing by 1.
我在 oracle 中有一个表,其中一列的所有行都必须以 500 的起始值更新并增加 1。
I tried to find something similar online but wasn't able to get anything useful. oracle and PL/SQL is not my expertise. any help would be appreciated.
我试图在网上找到类似的东西,但没有得到任何有用的东西。oracle 和 PL/SQL 不是我的专长。任何帮助,将不胜感激。
回答by Lalit Kumar B
I won't use PL/SQL since it could be done in plain SQL.
我不会使用 PL/SQL,因为它可以在普通 SQL 中完成。
You could use a SEQUENCEstarting with 500
and incremented by 1
.
你可以使用一个序列开始500
和递增1
。
For example,
例如,
set up
设置
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>
Now, let's updatethe table with the sequence.
现在,让我们用序列更新表。
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>
So, you have all the rows updated with the sequence starting with 500 and incremented by 1.
因此,您使用从 500 开始并以 1 递增的序列更新了所有行。
回答by US-1234
Please try like this,
请尝试这样,
DECLARE
VAL = 500;
BEGIN
FOR REC IN ( SELECT
*
FROM
Table1
)
LOOP
UPDATE Table1 SET col1 = VAL WHERE COL1 = REC.COL1 ;
VAL = VAL +1;
END LOOP;
END;
回答by Satheeshkumar P
DECLARE
VAL NUMBER := 1;
BEGIN
FOR REC IN ( select *
from customers
)
LOOP
UPDATE customers SET ID1 = VAL WHERE ID = REC.ID ;
VAL := VAL +1;
END LOOP;
END;