代码之家  ›  专栏  ›  技术社区  ›  m.tizchang

oracle 12c中缺少右括号

  •  1
  • m.tizchang  · 技术社区  · 8 年前

    我对此代码有问题 我检查了很多这个,但我不明白为什么会发生这个错误。

    CREATE TABLE PP_EMPLOYEES_PARTITIONED 
    (
    ID_ONE NUMBER (10) NOT NULL,
    FNAME VARCHAR2(30),
    LNAME VARCHAR2 (30),
    HIRED DATE NOT NULL DEFAULT '1970-01-01',
    SEPERATED DATE NOT NULL DEFAULT '9999-12-31',
    JOB_COD NUMBER (10) NOT NULL,
    STORED_ID NUMBER (10) NOT NULL
    )
    PARTITION BY RANGE (STORED_ID) 
    (
    PARTITION p0 VALUES LESS THAN (6),
    PARTITION p1 VALUES LESS THAN (11),
    PARTITION p2 VALUES LESS THAN (16),
    PARTITION p3 VALUES LESS THAN (21)
    );
    

    错误报告- ORA-00907:缺少右括号 00907.00000-“缺少右括号” *原因:
    *措施:

    1 回复  |  直到 7 年前
        1
  •  1
  •   Alex Poole    8 年前

    你有你的 DEFAULT 和 NOT NULL 条款 the wrong way round ; 而不是:

    HIRED DATE NOT NULL DEFAULT '1970-01-01',
    SEPERATED DATE NOT NULL DEFAULT '9999-12-31',
    

    应该是这样的

    HIRED DATE DEFAULT '1970-01-01' NOT NULL,
    SEPERATED DATE DEFAULT '9999-12-31' NOT NULL,
    

    虽然您不应该依赖隐式日期转换和NLS设置;要么使用 to_date() 或日期文字:

    CREATE TABLE PP_EMPLOYEES_PARTITIONED 
    (
      ID_ONE NUMBER(10) NOT NULL,
      FNAME VARCHAR2(30),
      LNAME VARCHAR2(30),
      HIRED DATE DEFAULT DATE '1970-01-01' NOT NULL,
      SEPERATED DATE DEFAULT DATE '9999-12-31' NOT NULL,
      JOB_COD NUMBER(10) NOT NULL,
      STORED_ID NUMBER(10) NOT NULL
    )
    PARTITION BY RANGE (STORED_ID) 
    (
      PARTITION p0 VALUES LESS THAN (6),
      PARTITION p1 VALUES LESS THAN (11),
      PARTITION p2 VALUES LESS THAN (16),
      PARTITION p3 VALUES LESS THAN (21)
    );
    
    Table PP_EMPLOYEES_PARTITIONED created.