public List<String> build() {
    return switch (dialect.getId()) {
      case Oracle.ID -> forOracle(tableName);
      case H2.ID, PostgreSql.ID -> singletonList("drop table if exists " + tableName);
      case MsSql.ID ->
        // "if exists" is supported only since MSSQL 2016.
        singletonList("drop table " + tableName);
      default -> throw new IllegalStateException("Unsupported DB: " + dialect.getId());
    };
  }
@Test
  public void drop_columns_on_oracle() {
    assertThat(new DropTableBuilder(new Oracle(), "issues")
      .build()).containsExactly(
      "BEGIN\n" +
        "EXECUTE IMMEDIATE 'DROP SEQUENCE issues_seq';\n" +
        "EXCEPTION\n" +
        "WHEN OTHERS THEN\n" +
        "  IF SQLCODE != -2289 THEN\n" +
        "  RAISE;\n" +
        "  END IF;\n" +
        "END;",
      "BEGIN\n" +
        "EXECUTE IMMEDIATE 'DROP TRIGGER issues_idt';\n" +
        "EXCEPTION\n" +
        "WHEN OTHERS THEN\n" +
        "  IF SQLCODE != -4080 THEN\n" +
        "  RAISE;\n" +
        "  END IF;\n" +
        "END;",
      "BEGIN\n" +
        "EXECUTE IMMEDIATE 'DROP TABLE issues';\n" +
        "EXCEPTION\n" +
        "WHEN OTHERS THEN\n" +
        "  IF SQLCODE != -942 THEN\n" +
        "  RAISE;\n" +
        "  END IF;\n" +
        "END;");
  }