创建表时出现“ORA-00922:缺少或无效选项”

Posted

技术标签:

【中文标题】创建表时出现“ORA-00922:缺少或无效选项”【英文标题】:"ORA-00922: missing or invalid option" when creating tables 【发布时间】:2012-03-25 07:51:45 【问题描述】:

我在 Oracle 中输入了以下 SQL 命令,但它抱怨“ORA-00922:缺少或无效选项”

CREATE TABLE Student (
    StuID     NUMBER(15),
    StuName   VARCHAR2(50),
    Phone     VARCHAR2(20),
    PRIMARY KEY (StuID))

CREATE TABLE Program (
    ProCode       VARCHAR2(12),
    ProTitle      VARCHAR2(50),
    PRIMARY KEY (ProCode))

为什么???

【问题讨论】:

您是否尝试一次只创建一个表来缩小问题范围?也许是因为您在 create table 语句之间缺少 ; 没有。添加分号会出现“无效字符”之类的错误 @Steven Odd,在我的 Oracle 上给出了完全相同的错误,添加分号使其工作。 sqlfiddle.com/#!4/87f1e @gdoron:Oracle 中没有创建或替换表。我同意 Joachim Isaksson 的观点:声明末尾缺少 ; @Steven:你用什么工具来运行它?如果它是 OracleXE 可怕的 html GUI(在浏览器中),那么它不支持运行多个语句。请改用 SQL Developer 或任何其他 GUI 工具。 【参考方案1】:

如果您正在使用 OracleXE 可怕的 HTML GUI(在浏览器中),那么它不支持运行多个语句。

改用 SQL Developer、SQL*Plus 或任何其他 GUI 工具。

【讨论】:

@Steven,如果这能最好地回答你的问题,那么请检查它旁边的绿色勾号,以便其他人知道你的问题已解决,how does accepting an answer work【参考方案2】:
CREATE TABLE Student (
    StuID     NUMBER(15),
    StuName   VARCHAR2(50),
    Phone     VARCHAR2(20),
    CONSTRAINT PK_STUID PRIMARY KEY (StuID))

找到答案here。

编辑:

另外,尝试使用/ 作为语句分隔符,而不是;

【讨论】:

【参考方案3】:

尽量不要定义StuID的大小。 还添加约束键工作 并且只是为了确保在 CREATE 之前使用 DROP 像这样:

DROP TABLE Student;

CREATE TABLE Student (
    StuID     NUMBER,
    StuName   VARCHAR2(50),
    Phone     VARCHAR2(20),
    constraint pk_Student PRIMARY KEY (StuID));

DROP TABLE Program;

CREATE TABLE Program (
    ProCode       VARCHAR2(12),
    ProTitle      VARCHAR2(50),
    constraint pk_Program PRIMARY KEY (ProCode));

【讨论】:

尝试完全复制我写的内容?因为它对我有用..我将开始更改为 CREATE OR REPLACE TABLE ,感谢@gdoron 如果我一张一张地创建表是可以的,但是当我同时创建它们时它又会失败 你误会了...read this。对不起。

以上是关于创建表时出现“ORA-00922:缺少或无效选项”的主要内容,如果未能解决你的问题,请参考以下文章

Oracle Apex ORA-00922:缺少或无效选项

Oracle SQL - ALTER VIEW:ORA-00922:缺少或无效选项

一个存储过程,报错如下 13 PL/SQL:ORA-00922:缺少或无效选项 13 PL/SQL:SQL Statement ignored

如何使用创建或替换?

运行查询以创建表时出现错误 1064?

为啥在创建表时出现“需要 Hive 支持”错误?