日期:2014-05-17  浏览次数:20836 次

oracle中,在不用nextval的情况下,如何得到序列当前值?
这个方法:
select last_number from user_sequence where sequence_name='SEQ_NAME';
貌似不行啊!

但是,先执行select your_seq_name.nextval from dual;再执行select your_seq_name.currval from dual;这种方法我知
道,可执行之后得到的就不是我想要的当前值了。除此之后没有别的方法了吗?

------解决方案--------------------
序列号设置了CACHE,会user_sequences的user_sequence 是根据CACHE大小跳跃的,要想查当前值只能从内存中读取:
SELECT KGLOBTN0-KGLOBTN1 FROM X$KGLOB WHERE KGLNAOBJ='SEQ_NAME';
但普通用户没有权限,建议你还是调整需求。