首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过SQL命令行创建表,无效标识符

通过SQL命令行创建表,无效标识符
EN

Stack Overflow用户
提问于 2014-12-22 13:50:57
回答 3查看 713关注 0票数 1

我目前正在学习SQL,我已经在我的系统上安装了oracle11gExpress。但是,当我尝试运行以下命令时,我会得到以下错误消息:

第3行中的错误: ORA-00904 :无效标识符

代码语言:javascript
运行
复制
CREATE TABLE PROJECTS (
    proID       NUMBER(4) NOT NULL,
    Desc        CHAR(20),
    sDate       DATE,
    eDate       DATE,
    Budget      NUMBER(7,2),
    maxStaff    NUMBER(2)
);

有人能告诉我我做错了什么吗?

谢谢您的回复,我成功地运行了这个命令:

代码语言:javascript
运行
复制
CREATE TABLE PROJECTS (
    proID       NUMBER(4) NOT NULL,
    description CHAR(20),
    sDate       DATE,
    eDate       DATE,
    Budget      NUMBER(7,2),
    maxStaff    NUMBER(2)
);

非常感谢您的快速回复!

克里斯

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-22 13:55:57

您将DESC作为列名。虽然你可以使用它,但你必须用引号来包含它:

代码语言:javascript
运行
复制
CREATE TABLE PROJECTS (
    proID       NUMBER(4) NOT NULL,
    "Desc"        CHAR(20),
    sDate       DATE,
    eDate       DATE,
    Budget      NUMBER(7,2),
    maxStaff    NUMBER(2)
);

您还必须在每次查询中调用它时使用引号。我建议您将该列更改为其他内容(可能是DESCRIPTION?)

票数 1
EN

Stack Overflow用户

发布于 2014-12-22 13:56:00

因为DESC是一个保留字,所以你必须用双引号把它括起来。

但是,我不建议对字段名使用保留字,可能会更改为description或类似的内容。

票数 1
EN

Stack Overflow用户

发布于 2014-12-22 15:28:50

如前所述,错误在这里是由使用未引用的保留关键字作为标识符造成的。为了完整起见:

  • 甲骨文有一个令人印象深刻的保留关键字列表
  • 未引用的标识符由Oracle内部转换为大写。
  • 引用的标识符区分大小写。

所以:

创建表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行插入

也就是说,您应该避免使用关键字作为标识符.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27604027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档