diff --git a/dmt/src/main/java/com/gbase8c/dmt/db/oracle/TableObjectImpl.java b/dmt/src/main/java/com/gbase8c/dmt/db/oracle/TableObjectImpl.java index 37e7620f9a2011f6a2989bdabeb0b5a39faa01a6..0601b1077c529c9f8d44e9fc1fa856c39dc453ad 100644 --- a/dmt/src/main/java/com/gbase8c/dmt/db/oracle/TableObjectImpl.java +++ b/dmt/src/main/java/com/gbase8c/dmt/db/oracle/TableObjectImpl.java @@ -130,18 +130,19 @@ public class TableObjectImpl extends MetaImpl implements TableObject { // for (TableDto.ColumnDto columnDto : columnDtos) { columnDto.setSqlType(toSqlType(columnDto.getDataType())); - if (columnDto.getSqlType().equals(Types.NUMERIC) && columnDto.getDataScale() == 0){ - columnDto.setSqlType(Types.INTEGER); + if (Objects.equals(columnDto.getSqlType(),Types.NUMERIC) + && !(Objects.isNull(columnDto.getDataScale())) + && !(Objects.isNull(columnDto.getDataPrecision())) + && columnDto.getDataScale() == 0){ + Integer dataPrecision = columnDto.getDataPrecision(); + if (dataPrecision>0 && dataPrecision<=4) { + columnDto.setSqlType(Types.SMALLINT); + } else if (dataPrecision>4 && dataPrecision<=9){ + columnDto.setSqlType(Types.INTEGER); + } else if (dataPrecision>9 && dataPrecision<=18){ + columnDto.setSqlType(Types.BIGINT); + } } -// if (columnDto.getDataType().contains("TIMESTAMP")) { -// columnDto.setSqlType(toSqlType("TIMESTAMP")); -// } -// if (columnDto.getDataType().contains("TIME ZONE")) { -// columnDto.setSqlType(toSqlType("TIMESTAMP WITH TIME ZONE")); -// } -// if (columnDto.getDataType().contains("INTERVAL")) { -// columnDto.setSqlType(toSqlType("INTERVAL")); -// } // // TODO pk // 主键 diff --git "a/\350\277\201\347\247\273\350\257\264\346\230\216.md" "b/\350\277\201\347\247\273\350\257\264\346\230\216.md" index aa73d0009947366b73800ebe64cbda4491a88e66..6bc278f987713fe0270cdd87ac0095bbe6b5506c 100644 --- "a/\350\277\201\347\247\273\350\257\264\346\230\216.md" +++ "b/\350\277\201\347\247\273\350\257\264\346\230\216.md" @@ -11,8 +11,8 @@ | NCHAR | character | 需要拼接长度 | | VARCHAR2 | character varying | 需要拼接长度 | | NVARCHAR2 | nvarchar2 | 需要拼接长度 | -| NUMBER | numeric | 需要拼接 precision和scale | -| INTEGER | integer | data_type列为NUMBER,且data_scale为0 | +| NUMBER(p,s) | numeric(p,s)。 | 需要拼接 precision和scale | +| NUMBER(p,0) | 当0