Korzystanie z parsera bazy danych Oracle z Java przy użyciu JDBC

Piszę narzędzie w Javie, które przesyła oświadczenia do bazy danych, które są później uruchamiane. Używam JDBC do łączenia się z bazą danych. Baza danych to Oracle 10g.

Zanim instrukcje zostaną zapisane w bazie danych, chcę je przeanalizować, aby sprawdzić, kiedy zostaną uruchomione później, nie będzie żadnych problemów. Szukałem w tym celu rozwiązania ANTLR, ponieważ dostępne są gramatyki, ale z pewnością Jeśli mam połączenie z bazą danych, musi istnieć sposób na wykorzystanie baz danych wbudowanych w parser.

Tak więc zasadniczo moje pytanie brzmi:

Czy istnieje sposób używania JDBC? Mogę wykonać wywołanie do parsera bazy danych przekazującego ją instrukcję SQL i zwróci mi jakąś informację zwrotną, informując mnie, czy to się powiedzie, czy jakieś komunikaty o błędach?

Każda pomoc jest bardzo mile widziana, wielkie dzięki.

Edytować:

Używanie connection.prepareStatement wydaje się nie działać, na przykład, dane wyjściowe zostały pomyślnie przeanalizowane!

String statement = "WHERE DISTINCT SELECT";
    Connection connection;
    try {
        connection = this.controller.getDataSource().getConnection();
        connection.prepareStatement(statement);
        connection.close();
        mainPanel.setPositiveText("Parsed Successfully!");
    } catch (Exception e) {
        mainPanel.setNegativeText("ERROR: " + e.getMessage());
        return;
    }

Soultion, którego użyłem, jest następujący:

    String statement = "DECLARE "
            + "myNumber NUMBER; "
            + "BEGIN "
            + "myNumber := SYS.dbms_sql.open_cursor; "
            + "SYS.DBMS_SQL.PARSE(myNumber, '" + text + "', SYS.DBMS_SQL.NATIVE); "
            + "END;";

    Connection connection;
    try {
        connection = this.controller.getDataSource().getConnection();
        PreparedStatement preparedStatement = connection.prepareStatement(statement);
        preparedStatement.execute();
        connection.close();
        mainPanel.setPositiveText("Parsed Successfully!");
    } catch (Exception e) {
        mainPanel.setNegativeText("ERROR: " + e.getMessage());
        System.out.println(e.getMessage());
        return;
    }

questionAnswers(2)

yourAnswerToTheQuestion