@Override
 public String asSqlType(String type, Integer length, Integer scale) {
   if (SubStyleType.CHAR.equals(type)) {
     return SqlType.newInstance("nchar", length, null).toString();
   } else if (SubStyleType.VARCHAR.equals(type)) {
     return SqlType.newInstance("nvarchar2", length, null).toString();
   } else if (SubStyleType.TEXT.equals(type)) {
     return "nclob";
   } else if (SubStyleType.BOOLEAN.equals(type)) {
     return "number(1)";
   } else if (SubStyleType.INT.equals(type)) {
     return "number(10)";
   } else if (SubStyleType.LONG.equals(type)) {
     return "number(20, 0)";
   } else if (SubStyleType.BIGINT.equals(type)) {
     return "number(38, 0)";
   } else if (SubStyleType.DOUBLE.equals(type)) {
     return "number(38,10)";
   } else if (SubStyleType.DECIMAL.equals(type)) {
     return SqlType.newInstance("number", length, scale).toString();
   } else if (SubStyleType.DATETIME.equals(type)) {
     return "date";
   } else if (SubStyleType.TIMESTAMP.equals(type)) {
     return "date";
   } else if (SubStyleType.DATE.equals(type)) {
     return "date";
   } else if (SubStyleType.TIME.equals(type)) {
     return "date";
   } else if (SubStyleType.CLOB.equals(type)) {
     return "nclob";
   } else if (SubStyleType.INPUTSTREAM.equals(type)) {
     return "blob";
   }
   return super.asSqlType(type, length, scale);
 }
 @Override
 public String asSqlType(String type, Integer length, Integer scale) {
   if (SubStyleType.TEXT.equals(type)) {
     return "longtext";
   } else if (SubStyleType.LONG.equals(type)) {
     return "bigint";
   } else if (SubStyleType.BIGINT.equals(type)) {
     return "decimal(64, 0)";
   } else if (SubStyleType.DATETIME.equals(type)) {
     return "datetime";
   } else if (SubStyleType.TIMESTAMP.equals(type)) {
     return "datetime";
   } else if (SubStyleType.BLOB.equals(type)) {
     return "longblob";
   }
   return super.asSqlType(type, length, scale);
 }
 @Override
 public String asSqlType(String type, Integer length, Integer scale) {
   if (SubStyleType.CHAR.equals(type)) {
     return SqlType.newInstance("nchar", length, null).toString();
   } else if (SubStyleType.VARCHAR.equals(type)) {
     return SqlType.newInstance("nvarchar", length, null).toString();
   } else if (SubStyleType.TEXT.equals(type)) {
     return "ntext";
   } else if (SubStyleType.LONG.equals(type)) {
     return "bigint";
   } else if (SubStyleType.BIGINT.equals(type)) {
     return "decimal(38, 0)";
   } else if (SubStyleType.DOUBLE.equals(type)) {
     return "float";
   } else if (SubStyleType.DATETIME.equals(type)) {
     return "datetime";
   } else if (SubStyleType.TIMESTAMP.equals(type)) {
     return "datetime";
   } else if (SubStyleType.INPUTSTREAM.equals(type)) {
     return "image";
   }
   return super.asSqlType(type, length, scale);
 }