使用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


如果一条语句同时包含对CURRVAL和NEXTVAL的引用,则Oracle将递增该序列,并为CURRVAL和NEXTVAL返回相同的值,而不管它们在该语句中的顺序如何。


对于Oracle而言,这样做对我而言并不合理,但我会相信他们的话。

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

10-11 02:57