Oracle d / b创建索引错误

时间:2011-04-06 06:13:15

标签: sql oracle oracle10g oracle-sqldeveloper

在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:

有任何帮助吗?

2 个答案:

答案 0 :(得分:5)

您缺少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) ;

答案 1 :(得分:0)

正如Michael Pakhantsov所说,缺少的字段列表显然是最大的问题。但是这个陈述还有其他一些问题。

您可能希望为索引指定实名,而不是使用系统生成的名称。这可能只是一个样式问题,但如果您创建以SYS开头的对象,则可能会造成混淆。 (或者是否有可能另一个对象名称与此冲突?我不确定Oracle如何提出其名称。)

PARALLEL (DEGREE 0 INSTANCES 0);是来自Oracle 7的并行子句语法。documentation警告“parallel_clause的语法取代了早期版本的Oracle中出现的语法。对于向后兼容性,仍支持取代语法,但可能会导致与记录的行为略有不同。“在我的测试中,我没有发现这种语法有任何问题,但如果可能的话,你仍然应该避免使用它。