case STRING: if (type.isUnconstrained()) { return jdbcInfo("NVARCHAR(4000)", Types.VARCHAR); } else if (type.isClob() || type.length > 4000) { return jdbcInfo("NVARCHAR(MAX)", Types.CLOB); } else { return jdbcInfo("NVARCHAR(%d)", type.length, Types.VARCHAR); return jdbcInfo("BIT", Types.BIT); case LONG: return jdbcInfo("BIGINT", Types.BIGINT); case DOUBLE: return jdbcInfo("DOUBLE PRECISION", Types.DOUBLE); case TIMESTAMP: return jdbcInfo("DATETIME2(3)", Types.TIMESTAMP); case BLOBID: return jdbcInfo("NVARCHAR(250)", Types.VARCHAR); case BLOB: return jdbcInfo("VARBINARY(MAX)", Types.VARBINARY); switch (idType) { case VARCHAR: return jdbcInfo("NVARCHAR(36)", Types.VARCHAR); case SEQUENCE: return jdbcInfo("BIGINT", Types.BIGINT); default: case SYSNAME: case SYSNAMEARRAY: