我只看到这种方式来获得序列号。但我想要一大块。选择seq1。
您可以使用雪花生成器生成行,然后使用seq.nextval
获得序列块。我猜这就是你的意思:
-- Create the sequence
create or replace sequence seq1;
-- Generate the block
select
s.nextval
from table (generator(rowcount => 10)) v,
table (getnextval(seq1)) s
order by 1;
上面的输出select:
+-------+
|NEXTVAL|
+-------+
|1 |
|2 |
|3 |
|4 |
|5 |
|6 |
|7 |
|8 |
|9 |
|10 |
+-------+
理解序列的语义很重要。序列不一定像这个例子中那样顺序生成(没有间隔),但它们总是唯一的。
从上面链接的文档:
不能保证序列中的值是连续的(无间隙),也不能保证序列值是按特定顺序赋值的。事实上,除了使用单行语句外,没有办法将序列中的值按指定顺序分配给行(这仍然不能保证间隔)。