【发布时间】:2015-05-07 19:54:29
【问题描述】:
我想获取 Oracle 序列的起始值。我使用命令SELECT * FROM user_sequences。但是没有起始值的列。有没有简单的方法来获取起始值?
【问题讨论】:
我想获取 Oracle 序列的起始值。我使用命令SELECT * FROM user_sequences。但是没有起始值的列。有没有简单的方法来获取起始值?
【问题讨论】:
也许您可以从序列生成的数字中推断出它,而不是尝试从序列中读取起始值。 Min() 或 Max() 用于降序序列,从它用于的任何列中选择。
【讨论】:
您还可以使用 ddl 命令查找以 value 开头的语句,该语句用于创建序列。
SQL> SELECT dbms_metadata.get_ddl('SEQUENCE','GEN_VALUES') FROM dual;
DBMS_METADATA.GET_DDL('SEQUENCE','GEN_VALUES')
--------------------------------------------------------------------------------
CREATE SEQUENCE "SCOTT"."GEN_VALUES" MINVALUE 1000 MAXVALUE 1000000 INCREME
NT BY 1 START WITH 1000 CACHE 20 NOORDER NOCYCLE
【讨论】:
抱歉,一般情况下您不能这样做。看:
SQL> create sequence s start with 100 increment by -10 minvalue 0 maxvalue 1000 cycle;
Sequence created.
SQL> select sequence_name, min_value, max_value, increment_by, last_number
2 from user_sequences where sequence_name = 'S';
SEQUENCE_N MIN_VALUE MAX_VALUE INCREMENT_BY LAST_NUMBER
---------- ---------- ---------- ------------ -----------
S 0 1000 -10 100
SQL> select s.nextval from dual connect by level <= 5;
NEXTVAL
----------
100
90
80
70
60
SQL> select sequence_name, min_value, max_value, increment_by, last_number
2 from user_sequences where sequence_name = 'S';
SEQUENCE_N MIN_VALUE MAX_VALUE INCREMENT_BY LAST_NUMBER
---------- ---------- ---------- ------------ -----------
S 0 1000 -10 -10
【讨论】: