【问题标题】:Elementary Oracle SQL Error message ORA-00900初级 Oracle SQL 错误消息 ORA-00900
【发布时间】:2019-06-10 00:56:45
【问题描述】:

我对编写 SQL 还很陌生,但目前我对基础知识有了不错的了解。我试图弄清楚为什么我会收到以下错误消息:ORA-00900: invalid SQL statement.

此外,如果我能找到导致错误的行会有所帮助。

CREATE TABLE ADVENTURE_TRIP (
    COLUMN CHAR(15) PRIMARY KEY,
    TYPE CHAR(15),
    LENGTH CHAR(15),
    DECIMAL_PLACES CHAR(15),
    NULLS_ALLOWED CHAR(15) NOT NULL, 
    DESCRIPTION CHAR(25)
);

【问题讨论】:

  • 请不要使用char 数据类型。与varchar2 相比,它绝对没有优势,但有很多缺点。名为 decimal_placeslength 的列可能应该定义为 number - 从不在 char 或 varchar 列中存储数字(或日期)。
  • 您可以使用trip_type, duration/adventure_duration/trip_duration 作为列名。

标签: sql oracle


【解决方案1】:

单词COLUMN 是保留字,不适用于列名。您应该为该列选择一个更好的名称。

虽然TYPE 也是保留字,但允许作为列名。我也会改变它。

另外,对于 Oracle 中的字符串类型,通常VARCHAR2() 优于 CHAR()

保留字列表为here

【讨论】:

  • 谢谢!看起来专栏是问题所在。将来会使用 Varchar2。这很有帮助!
【解决方案2】:

@Gordon 描述了正确的理由。 应避免保留关键字。

但是,如果您真的想创建问题中提到的表格,那么您可以使用以下代码:

CREATE TABLE ADVENTURE_TRIP (
    "COLUMN" CHAR(15) PRIMARY KEY,
    "TYPE" CHAR(15),
    LENGTH CHAR(15),
    DECIMAL_PLACES CHAR(15),
    NULLS_ALLOWED CHAR(15) NOT NULL, 
    DESCRIPTION CHAR(25)
);

双引号可用于此目的。 这只是为了让您理解,但在现实世界中,您必须避免使用保留关键字。 这是Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-21
    • 2016-11-30
    • 2017-05-12
    • 2019-03-30
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    相关资源
    最近更新 更多