【问题标题】:Why does this CREATE TABLE statement cause "ORA-00922 missing or invalid option"?为什么此 CREATE TABLE 语句会导致“ORA-00922 缺失或无效选项”?
【发布时间】:2011-12-05 14:05:25
【问题描述】:

我已经使用 SQL Developer(工具 -> 卸载数据库)从一个 Oracle 数据库中导出了一个模式。它创建了与此类似的“创建表”语句:

CREATE TABLE "APP_USER" 
   (    "ID" NUMBER(*,0), 
    "USERNAME" VARCHAR2(200), 
    "PASSWORD" NVARCHAR2(200), 
    "TYPE" VARCHAR2(20), 
    "FIRST_NAME" VARCHAR2(100), 
    "LAST_NAME" VARCHAR2(100)
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  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 "LIS_DATA" ;

但是当我尝试在另一个数据库上执行代码时,同样来自 SQL Developer,它会触发“ORA-00922 缺失或无效选项”。

显然查询的存储部分有问题(以“SEGMENT”开头并以“DEFAULT”结尾)”,因为如果我删除它,它就可以工作。但究竟是什么?

我只是一个碰巧必须与 Oracle 合作的应用程序开发人员。我对 SQL 没问题,但是这个 Oracle 存储参数的东西对我来说是中文的。另外,我对 SQL Developer 生成无效代码感到困惑......

【问题讨论】:

    标签: sql oracle oracle-sqldeveloper


    【解决方案1】:

    我不熟悉“立即创建分段”。好像是11G的功能。也许您正尝试在旧版本数据库上使用 11G 功能创建表。

    【讨论】:

    • 我认为你成功了。我导出的数据库是 11g,我尝试导入到 10g。谢谢!
    【解决方案2】:

    来自HERE

    ORA-00922:缺少或无效选项原因:

    一个无效的选项是 在定义列或存储子句时指定。中的有效选项 指定一个列是 NOT NULL 来指定该列不能 包含任何 NULL 值。只有约束可以遵循数据类型。 在 DATE 或 LONG 数据类型上指定最大长度也会导致 这个错误。行动:更正语法。删除错误的选项或 列或存储规范中的长度规范。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多