首页 文章

在oracle 12c中缺少正确的paranthesis

提问于
浏览
1

我有这个代码的问题我检查了很多这个但我无法理解为什么会发生这个错误 .

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 - "missing right parenthesis" *原因:
*行动:

1 回答

  • 0

    你有 DEFAULTNOT 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.
    

相关问题