我试图找到一种方法来了解oracle sql中给定序列的值的起点。 有没有办法做到这一点?
此外,我想列出以下的当前最大值为
select object_name.NEXTVAL
from DUAL
where object_name IN
(select object_name from all_objects where object_type like 'SEQUENCE')
但这会导致语法错误。
答案 0 :(得分:2)
select sequence_name,
LAST_NUMBER as NEXT_VAL,
MIN_VALUE as START_WITH
from dba_sequences
where sequence_name ='S';
P.S。
到结果时,很可能该序列可能已被另一个过程增加
LAST_NUMBER
将不准确。 1! (序列将提前生成并缓存以提高性能)因此只能使用NEXT_VAL
来查找它。但即使是打印目的,调用NEXT_VAL
也会增加它。
MIN_VALUE
时, START_WITH
将等于START_WITH
!除了检查DDL
之外,还有 NO 查找方式。
查询获取序列的DDL:
dbms_metadata.get_ddl('SEQUENCE', 'SEQ_NAME')
的信用