在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:
有任何帮助吗?
答案 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中出现的语法。对于向后兼容性,仍支持取代语法,但可能会导致与记录的行为略有不同。“在我的测试中,我没有发现这种语法有任何问题,但如果可能的话,你仍然应该避免使用它。