如何在db2中的不同行中检索多个序列的下一个值?

时间:2018-05-28 06:41:43

标签: sql db2

我正在使用此查询

SELECT NEXT VALUE FOR SEQUENCENAME1 FROM DUMMY_TABLE UNION
SELECT NEXT VALUE FOR SEQUENCENAME2 FROM DUMMY_TABLE

这不是多行的答案。 建议我解决这个问题,因为我必须检索数千个序列的下一个值

3 个答案:

答案 0 :(得分:1)

回答您的核心问题:您可以查看SYSCAT.SEQUENCES以获取有关序列的元数据。

属性/列START和NEXTCACHEFIRSTVALUE是您感兴趣的。请注意,序列值通常是为了提高性能而缓存的,因此您需要牢记这一点。

答案 1 :(得分:0)

尝试使用UNION ALL

SELECT NEXT VALUE FOR SEQUENCENAME1 FROM DUMMY_TABLE UNION ALL
SELECT NEXT VALUE FOR SEQUENCENAME2 FROM DUMMY_TABLE;

如果表达式返回相同的值,那么UNION将只返回一行 - 它会删除重复项。

答案 2 :(得分:0)

您可以使用此查询

VALUES (NEXT VALUE FOR SEQUENCENAME1)
,      (NEXT VALUE FOR SEQUENCENAME2)

虽然你不知道哪一行是哪个,所以也许这个

VALUES ('SEQ1', NEXT VALUE FOR SEQUENCENAME1)
,      ('SEQ2', NEXT VALUE FOR SEQUENCENAME2)