哪个oracle数据类型映射到BIGINT?

时间:2017-10-02 18:40:38

标签: oracle jdbc sqldatatypes

SQL> CREATE TABLE Product (id NUMBER(19,0) NOT NULL, name VARCHAR2(10 CHAR) NOT NULL);

Table created.

SQL> desc Product;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                        NOT NULL NUMBER(19)
 NAME                                      NOT NULL VARCHAR2(10 CHAR)

类型NUMBER(19,0)变为NUMBER(19)。

从JDBC,id类型NUMBER(19)映射到java.sql.Types.DECIMAL,而不是java.sql.Types.BIGINT。什么是映射到jdbc BIGINT的oracle数据库类型?

1 个答案:

答案 0 :(得分:1)

  

8.3.7 BIGINT

     

JDBC类型BIGINT表示之间的64位有符号整数值   -9223372036854775808和9223372036854775807。

     

相应的SQL类型BIGINT是SQL的非标准扩展。   实际上,SQL BIGINT类型目前尚未实现   任何主要数据库,我们建议避免使用它   在可移植的代码中。

     

BIGINT类型的推荐Java映射是Java long。   https://docs.oracle.com/javase/1.5.0/docs/guide/jdbc/getstart/mapping.html

然而,不完全确定没有RDBMS以这种方式实现BIGINT的声明,MS SQL Server文档声明:

Data type   Range   Storage
bigint  -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)    8 Bytes

https://docs.microsoft.com/en-us/sql/t-sql/data-types/int-bigint-smallint-and-tinyint-transact-sql

尽管JDBC映射是LONG