【问题标题】:ora-00906: missing left parenthesis while creating tableora-00906: 创建表时缺少左括号
【发布时间】:2018-03-17 19:45:01
【问题描述】:

我正在使用 oracle pl.sql 开发人员。我有两个模式,我想从另一个模式中的一个模式创建一个表。我使用 dbms_metadata.getddl() 来检索创建表脚本。但是,当我在另一个模式中运行该脚本时,我得到 ORA-00906L 缺少左括号错误。代码如下:

  CREATE TABLE "DWH"."IBS_S_DOCUMENT_1" OF "DWH"."IBS_S_DOCUMENT_T_1"
 (
   CONSTRAINT "XPK_S_DOCUMENT" PRIMARY KEY ("CODE")
  USING INDEX (CREATE UNIQUE INDEX "DWH"."XPK_S_DOCUMENT" ON "DWH"."IBS_S_DOCUMENT_1"
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "DWH_INDEX" )  ENABLE,
   CONSTRAINT "HSYS_005480" CHECK (DATE_ACTIV IS NOT NULL) ENABLE,
   CONSTRAINT "HSYS_005481" CHECK (DATE_CORRECT IS NOT NULL) ENABLE,
   CONSTRAINT "HSYS_005482" CHECK (CORRECTURE IS NOT NULL) ENABLE,
   CONSTRAINT "HSYS_005483" CHECK (Correcture IN ('A', 'C', 'D', 'T', 'U')) ENABLE
  ) OBJECT IDENTIFIER IS PRIMARY KEY
   PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
 NOCOMPRESS LOGGING
  STORAGE(
    INITIAL 16384 NEXT 16384 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "DWH_DATA"
 NESTED TABLE "IBS_S_DOCUMENT_1_H" STORE AS "IBS_S_DOCUMENT_1_HIS"
 (( PRIMARY KEY ("NESTED_TABLE_ID", "DATE_ACTIV") ENABLE)
 ORGANIZATION INDEX PCTTHRESHOLD 50
 NOCOMPRESS PCTFREE 10 INITRANS 2 MAXTRANS 255 LOGGING
  STORAGE(INITIAL 16384 NEXT 16384 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "DWH_INDEX" ) RETURN AS VALUE

IBS_S_DOCUMENT_T_1 类型如下:

   CREATE OR REPLACE TYPE "IBS_S_DOCUMENT_T_1"                                          as object (
  CODE                           VarChar2(2),
  NAME                           IBS_S_DOCUMENT_1_NVT,
  DATE_ACTIV                     DATE,
  DATE_DEACT                     DATE,
  DATE_CORRECT                   DATE,
  CORRECTURE                     VarChar2(1),
  CONDITION                      VarChar2(1),
  IBS_S_DOCUMENT_1_H                   IBS_S_DOCUMENT_1_NT
);

为什么会出现 ora-00906 错误?有人可以帮忙吗?

【问题讨论】:

  • (不是很重要;但是,它不是“oracle pl.sql developer”,而是 Oracle SQL Developer)。由于您已经使用该工具,请单击表名称 - 在右侧将打开其描述。最后一个选项卡称为“SQL” - 单击它。复制该代码并将其粘贴到另一个架构中。有什么改善吗?
  • 谢谢。实际上,我正在使用 pl/sql 开发人员。根据您所说,我在列选项卡中找到了“查看 sql”,但使用该 sql 不起作用,所以我尝试使用表的 ddl,它似乎有效。再次感谢
  • 啊哈;所以它就是 Allround Automations 的 PL/SQL Developer。如果您设法解决了问题,我很高兴。
  • 致所有社区最尊敬的 Oracle 标签亲爱的会员:有ora-00900ora-00904ora-00907 标签但没有ora-00906 标签...请关注 :)

标签: oracle ddl


【解决方案1】:

只需在USING INDEX 之后删除这部分(CREATE UNIQUE INDEX "DWH"."XPK_S_DOCUMENT" ON "DWH"."IBS_S_DOCUMENT_1",当然,在第一个ENABLE 之前删除),然后它就可以工作了:

  CREATE TABLE "DWH"."IBS_S_DOCUMENT_1" OF "DWH"."IBS_S_DOCUMENT_T_1"
 (
   CONSTRAINT "XPK_S_DOCUMENT" PRIMARY KEY ("CODE")
  USING INDEX --(CREATE UNIQUE INDEX "DWH"."XPK_S_DOCUMENT" ON "DWH"."IBS_S_DOCUMENT_1"
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "DWH_INDEX" --)  
                         ENABLE,
   CONSTRAINT "HSYS_005480" CHECK (DATE_ACTIV IS NOT NULL) ENABLE,
   CONSTRAINT "HSYS_005481" CHECK (DATE_CORRECT IS NOT NULL) ENABLE,
   CONSTRAINT "HSYS_005482" CHECK (CORRECTURE IS NOT NULL) ENABLE,
   CONSTRAINT "HSYS_005483" CHECK (Correcture IN ('A', 'C', 'D', 'T', 'U')) ENABLE
  ) OBJECT IDENTIFIER IS PRIMARY KEY
   PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
 NOCOMPRESS LOGGING
  STORAGE(
    INITIAL 16384 NEXT 16384 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "DWH_DATA"
 NESTED TABLE "IBS_S_DOCUMENT_1_H" STORE AS "IBS_S_DOCUMENT_1_HIS"
 (( PRIMARY KEY ("NESTED_TABLE_ID", "DATE_ACTIV") ENABLE)
 ORGANIZATION INDEX PCTTHRESHOLD 50
 NOCOMPRESS PCTFREE 10 INITRANS 2 MAXTRANS 255 LOGGING
  STORAGE(INITIAL 16384 NEXT 16384 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "DWH_INDEX" ) RETURN AS VALUE 

无需为PRIMARY KEY 表达CREATE UNIQUE INDEX,它已经使用给定名称XPK_S_DOCUMENT 创建。

【讨论】:

  • 感谢您的帮助!这就是问题
猜你喜欢
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多