2017-01-22 26 views
1

正如我试图创建ShortInteger无效的数据类型SQL开发

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) 
); 

我面对此错误消息

错误报告此表在SQL Developer中 -
ORA-00902:无效数据类型
00902. 00000 - “无效数据类型”
*原因:
*行动:

看来,SQL开发人员不能识别SHORTINTEGER因为他们没有在蓝色

突出,但根据文档Oracle DocumentationSHORTINTEGER是一个真正的数据类型

我做了什么错?

+0

只是在Oracle中使用INTEGER,SMALLINT等的快速评论。人们会认为对于数据类型INTEGER,Oracle将使用整数算术的硬件实现。 **它不**。无论您声明哪种数据类型,Oracle都将使用库函数进行所有算术运算,因此使用INTEGER实际上效率不高,因为它需要转换为NUMBER,然后转换回INTEGER。这种安排离最佳状态还有很远的距离(甲骨文的想法是什么?),但这正是我们所处的位置。使用'NUMBER(...,0)'并检查约束条件是否要强制数据为整数。 – mathguy

回答

1

不支持SHORTINTEGER。 您正在链接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本地数据类型。

+0

谢谢........我猜Oracle是如此的一个大世界.....对不起,对于没有经历过所有Oracle结构的人来说并不明显 – napi15

+0

不客气......不要对不起.Oracle是相当大的,正如你所说的那样,文档就像是一个迷宫:) – Massimo

0

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

相关问题