如何找到db序列值的起点

时间:2014-02-19 18:42:34

标签: sql oracle sequence

我试图找到一种方法来了解oracle sql中给定序列的值的起点。 有没有办法做到这一点?

此外,我想列出以下的当前最大值为

select object_name.NEXTVAL 
from DUAL 
where object_name IN 
(select object_name from all_objects where object_type like 'SEQUENCE')

但这会导致语法错误。

1 个答案:

答案 0 :(得分:2)

select sequence_name,
       LAST_NUMBER as NEXT_VAL,
       MIN_VALUE as START_WITH
from dba_sequences 
where sequence_name ='S';

P.S。
到结果时,很可能该序列可能已被另一个过程增加

如果您的序列是使用CACHE>定义的,则

LAST_NUMBER将不准确。 1! (序列将提前生成并缓存以提高性能)因此只能使用NEXT_VAL来查找它。但即使是打印目的,调用NEXT_VAL也会增加它。

仅当创建时未指定MIN_VALUE时,

START_WITH将等于START_WITH!除了检查DDL之外,还有 NO 查找方式。

查询获取序列的DDL:

dbms_metadata.get_ddl('SEQUENCE', 'SEQ_NAME')

Nicholas Krasnov

的信用