ora-00906: 创建 table 时缺少左括号
ora-00906: missing left parenthesis while creating table
我正在使用 oracle pl.sql 开发人员。我有两个模式,我想从一个模式到另一个模式创建一个 table。我使用 dbms_metadata.getddl() 来检索创建 table 脚本。但是,当我 运行 该脚本在另一个模式中时,我得到 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 错误?有人可以帮忙吗?
只需删除 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
.
创建
我正在使用 oracle pl.sql 开发人员。我有两个模式,我想从一个模式到另一个模式创建一个 table。我使用 dbms_metadata.getddl() 来检索创建 table 脚本。但是,当我 运行 该脚本在另一个模式中时,我得到 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 错误?有人可以帮忙吗?
只需删除 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
.