Oracle d / b创建索引错误

在sql开发人员中运行时,我在下面的sql上丢失了表达式(虽然我相信它与oracle客户端无关)尽管一切似乎都没问题。
  CREATE UNIQUE INDEX "CRIS2"."SYS_IL0000296692C00014$$" ON "CRIS2"."AOITARGETPOINT" (
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "BIOSIRTDATA" 
  PARALLEL (DEGREE 0 INSTANCES 0) ;

--------------------------------------------------
Error starting at line 1 in command:
  CREATE UNIQUE INDEX "CRIS2"."SYS_IL0000296692C00014$$" ON "CRIS2"."AOITARGETPOINT" (
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "BIOSIRTDATA" 
  PARALLEL (DEGREE 0 INSTANCES 0) 
Error at Command Line:2 Column:2
Error report:
SQL Error: ORA-00936: missing expression
00936. 00000 -  "missing expression"
*Cause:    
*Action:
有任何帮助吗?     
已邀请:
您缺少CREATE INDEX语句中的列列表
  CREATE UNIQUE INDEX "CRIS2"."SYS_IL0000296692C00014$$" ON "CRIS2"."AOITARGETPOINT" 
  (-->Field List<--)
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "BIOSIRTDATA" 
  PARALLEL (DEGREE 0 INSTANCES 0) ;
    
正如Michael Pakhantsov所提到的,缺少的字段列表显然是最大的问题。但是这个陈述还有其他一些问题。 您可能希望为索引指定实名,而不是使用系统生成的名称。这可能只是一个样式问题,但如果您创建以SYS开头的对象,则可能会造成混淆。 (或者是否有可能另一个对象名称与此冲突?我不确定Oracle如何提出其名称。)
PARALLEL (DEGREE 0 INSTANCES 0);
是来自Oracle 7的并行子句语法。文档警告“parallel_clause的语法取代了早期版本的Oracle中出现的语法。对于向后兼容性,仍支持Superseded语法,但可能导致与记录的行为略有不同。”在我的测试中,我没有发现这种语法有任何问题,但如果可能的话,你仍然应该避免使用它。     

要回复问题请先登录注册