我目前正在学习SQL,我已经在我的系统上安装了oracle11gExpress。但是,当我尝试运行以下命令时,我会得到以下错误消息:
第3行中的错误: ORA-00904 :无效标识符
CREATE TABLE PROJECTS (
    proID       NUMBER(4) NOT NULL,
    Desc        CHAR(20),
    sDate       DATE,
    eDate       DATE,
    Budget      NUMBER(7,2),
    maxStaff    NUMBER(2)
);有人能告诉我我做错了什么吗?
谢谢您的回复,我成功地运行了这个命令:
CREATE TABLE PROJECTS (
    proID       NUMBER(4) NOT NULL,
    description CHAR(20),
    sDate       DATE,
    eDate       DATE,
    Budget      NUMBER(7,2),
    maxStaff    NUMBER(2)
);非常感谢您的快速回复!
克里斯
发布于 2014-12-22 13:55:57
您将DESC作为列名。虽然你可以使用它,但你必须用引号来包含它:
CREATE TABLE PROJECTS (
    proID       NUMBER(4) NOT NULL,
    "Desc"        CHAR(20),
    sDate       DATE,
    eDate       DATE,
    Budget      NUMBER(7,2),
    maxStaff    NUMBER(2)
);您还必须在每次查询中调用它时使用引号。我建议您将该列更改为其他内容(可能是DESCRIPTION?)
发布于 2014-12-22 13:56:00
因为DESC是一个保留字,所以你必须用双引号把它括起来。
但是,我不建议对字段名使用保留字,可能会更改为description或类似的内容。
发布于 2014-12-22 15:28:50
如前所述,错误在这里是由使用未引用的保留关键字作为标识符造成的。为了完整起见:
所以:
创建表T (DESC INT); ORA-00904::无效的标识符作为
DESC是关键字CREATE (Desc ); ORA-00904::无效的标识符,与未引用的标识符转换为所有大写的创建表T ("DESC“INT)的原因相同; 表使用引号创建,"DESC"不再被识别为保留关键字 插入T("Desc")值(1); ORA-00904:"Desc":无效标识符引用的标识符区分大小写。"DESC"不是与"Desc"相同的列 插入T("DESC")值(1); 1行插入
也就是说,您应该避免使用关键字作为标识符.
https://stackoverflow.com/questions/27604027
复制相似问题