如何从雪花序列中获取数字块

时间:2021-02-24 02:02:23

标签: sequence snowflake-cloud-data-platform

我只看到这种获取序列号的方式。但我想得到一块。 select seq1.nextval a from dual;

1 个答案:

答案 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 很重要。序列不一定像本例中那样按顺序生成(没有间隙),但它们将始终是唯一的。

来自上面链接的文档:

<块引用>

无法保证序列中的值是连续的(无间隙)或序列值以特定顺序分配。实际上,除了使用单行语句(这仍然不能保证间隙)之外,没有其他方法可以将序列中的值以指定的顺序分配给行。