创建表时出现“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 SQL - ALTER VIEW:ORA-00922:缺少或无效选项
一个存储过程,报错如下 13 PL/SQL:ORA-00922:缺少或无效选项 13 PL/SQL:SQL Statement ignored