sql - 在单个查询中检索 CURRVAL 和 NEXTVAL

标签 sql oracle nextval

使用 SQLPlus,我生成了以下序列:

CREATE SEQUENCE pubnum_seq
START WITH 7
    INCREMENT BY 2
MAXVALUE 1000;

我想要做的是编写一个查询来检索序列中的 NEXTVAL 和 CURRVAL。看起来应该很简单。我试过以下语句:

SELECT pubnum_seq.currval, pubnum_seq.nextval
FROM dual;

然而,这会为两者检索相同的值。

CURRVAL - 7
NEXTVAL - 7

如果我分别尝试语句,那么它会给出我想要的结果,但我不知道如何在一个查询中执行此操作。

最佳答案

好吧,在 Oracle 上搜索文档后,我猜我的说法毕竟是正确的。根据this docs page :

If a statement contains references to both CURRVAL and NEXTVAL, Oracle increments the sequence and returns the same value for both CURRVAL and NEXTVAL regardless of their order within the statement.

Oracle 这样做对我来说不太合理,但我相信他们的话。

关于sql - 在单个查询中检索 CURRVAL 和 NEXTVAL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24345497/

相关文章:

sql - Oracle PL/SQL 中的字符串删除

oracle - 如何通过 NHibernate 从 oracle 序列获取 NextVal

mysql - 在我的 SQL 查询中编写 LIMIT 子查询

php - 将来自 2 个数据库(A 和 B)的数据插入到数据库 B 的 1 个表中

sql - Postgresql在不同服务器上的不同查询计划

java - 使用 Java 将 Oracle 数据库迁移到 MS Access 的最佳方法是什么?

database - Oracle 中的观察者模式

codeigniter - PostgreSQL 序列的下一个值?

SQL - 排序后,仅返回列中具有某些连续值的行