【问题标题】:ShortInteger invalid data type SQL DeveloperShortInteger 无效数据类型 SQL Developer
【发布时间】:2017-06-06 20:55:04
【问题描述】:

当我试图在 SQL Developer 中创建这个表时

CREATE TABLE CARTECREDIT 
(
    forfaitID  INTEGER,
    nomForfait VARCHAR(13) NOT NULL ,
    cout NUMBER(10,4),
    locationMax SHORTINTEGER  NOT NULL,
    dureeMax  SHORTINTEGER   NOT NULL,
    PRIMARY KEY (forfaitID)
);

我正面临此错误消息

错误报告 -
ORA-00902: 无效的数据类型
00902. 00000 - “无效数据类型”
*原因:
*行动:

SQL Developer 似乎无法识别SHORTINTEGER,因为它们没有以蓝色突出显示

但是根据文档Oracle Documentation SHORTINTEGER 是一个真正的数据类型

我做错了什么?

【问题讨论】:

  • 简单评论一下在 Oracle 中使用 INTEGER、SMALLINT 等。有人会认为对于数据类型 INTEGER,Oracle 将使用整数运算的硬件实现。 没有。无论您声明什么数据类型,Oracle 都会对所有算术使用库函数,因此使用 INTEGER 实际上效率低下,因为它需要先转换为 NUMBER,然后再转换回 INTEGER。这种安排远非最佳(甲骨文的想法是什么?),但这就是我们所处的位置。如果您想强制数据为整数,请使用NUMBER(..., 0) 并检查约束。

标签: sql oracle create-table


【解决方案1】:

不支持SHOTINTEGER。 您正在链接 OLAP Datawerehouse 中使用的数据类型的文档。

此处指定了 Oracle 10 的数据类型

https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements001.htm#i54873

如果您想使用 Oracle 原生数据类型,您应该使用 NUMBER(可选择指定精度和小数位数)和 VARCHAR2 而不是 VARCHAR

不过,您也可以使用 ANSI 数据类型,例如 INTEGER、INT、SMALLINT、VARCHAR。但我建议你使用 Oracle 原生数据类型。

【讨论】:

  • 谢谢 ........我猜 Oracle 是一个很大的世界......抱歉,对于没有体验过所有 Oracle 结构的人来说,这并不明显
  • 不客气..别抱歉..Oracle 很大,正如您所说,文档就像迷宫 :)
【解决方案2】:

我经常使用数字,但没有指定精度和比例。而且使用起来更舒服。但马西莫的回答是恶毒的:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多