我只看到这种获取序列号的方式。但我想得到一块。 select seq1.nextval a from dual;
答案 0 :(得分:1)
您可以使用雪花 generator 生成行,然后使用 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;
以上选择的输出:
+-------+
|NEXTVAL|
+-------+
|1 |
|2 |
|3 |
|4 |
|5 |
|6 |
|7 |
|8 |
|9 |
|10 |
+-------+
了解 semantics of sequences 很重要。序列不一定像本例中那样按顺序生成(没有间隙),但它们将始终是唯一的。
来自上面链接的文档:
<块引用>无法保证序列中的值是连续的(无间隙)或序列值以特定顺序分配。实际上,除了使用单行语句(这仍然不能保证间隙)之外,没有其他方法可以将序列中的值以指定的顺序分配给行。