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数据库类型?
答案 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