Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在db2中为不同行中的多个序列检索下一个值?_Sql_Db2 - Fatal编程技术网

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

Sql 如何在db2中为不同行中的多个序列检索下一个值?,sql,db2,Sql,Db2,我正在使用这个查询 SELECT NEXT VALUE FOR SEQUENCENAME1 FROM DUMMY_TABLE UNION SELECT NEXT VALUE FOR SEQUENCENAME2 FROM DUMMY_TABLE VALUES (NEXT VALUE FOR SEQUENCENAME1) , (NEXT VALUE FOR SEQUENCENAME2) 这不会产生多行的答案。 为我提供一些解决方案,因为我必须检索数千个序列的下一个值来回答您的核心问题:

我正在使用这个查询

SELECT NEXT VALUE FOR SEQUENCENAME1 FROM DUMMY_TABLE UNION
SELECT NEXT VALUE FOR SEQUENCENAME2 FROM DUMMY_TABLE
VALUES (NEXT VALUE FOR SEQUENCENAME1)
,      (NEXT VALUE FOR SEQUENCENAME2)
这不会产生多行的答案。
为我提供一些解决方案,因为我必须检索数千个序列的下一个值来回答您的核心问题:您可以检查序列的元数据


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

尝试使用
UNION ALL

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

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

您可以使用此查询

SELECT NEXT VALUE FOR SEQUENCENAME1 FROM DUMMY_TABLE UNION
SELECT NEXT VALUE FOR SEQUENCENAME2 FROM DUMMY_TABLE
VALUES (NEXT VALUE FOR SEQUENCENAME1)
,      (NEXT VALUE FOR SEQUENCENAME2)
虽然你不知道哪一行是哪一行,所以也许这个

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

UNION
删除重复项,因此如果两个序列返回相同的值,则只能得到一行。改为尝试
UNION ALL
(但是检索“数千”个序列的下一个值听起来很奇怪。您试图解决的实际问题是什么?)我已经更改了数据库中的序列,我想检查它们是否被正确更改。因此,我正在检索nextvalue以供他们检查是否有任何序列被跳过以进行更改。为什么不检查目录表以查看该更改是否正确反映…?在上述查询中使用union或union all时,我遇到了错误-Nextval不表示此上下文。union all,UNION不能与中的下一个值或seqname.NEXTVAL一起使用db2@coderzzz18 . . . 有趣。为什么您的原始代码可以工作?