【问题标题】:how to find the start value of an Oracle sequence如何找到Oracle序列的起始值
【发布时间】:2015-05-07 19:54:29
【问题描述】:

我想获取 Oracle 序列的起始值。我使用命令SELECT * FROM user_sequences。但是没有起始值的列。有没有简单的方法来获取起始值?

【问题讨论】:

    标签: oracle sequence


    【解决方案1】:

    也许您可以从序列生成的数字中推断出它,而不是尝试从序列中读取起始值。 Min() 或 Max() 用于降序序列,从它用于的任何列中选择。

    【讨论】:

      【解决方案2】:

      您还可以使用 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
      

      【讨论】:

      • 他不能。它只会使用当前值(即 LAST_NUMBER)作为起始值。
      【解决方案3】:

      抱歉,一般情况下您不能这样做。看:

      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                       
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-27
        • 2018-08-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多