PL/SQL-Aufruf von JDBC-was in "SQLSyntaxErrorException: ORA-00900"

Ich versuche, verwenden Sie den folgenden code zum ausführen eines PL/SQL-Anweisung auf meinen Datenbank-server.

public class Main {
    public static void main(String[] args) {
        String jdbcURL = "jdbc:oracle:thin:@172.22.88.9:1521/xavier.i.com";

        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        String user = "bigdb";
        String password = "fakepassword";
        String result = null;
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
            conn = DriverManager.getConnection(jdbcURL, user, password);

            result = runStatement(conn,
              "{begin ANALYZE TABLE BIGDB.scr_fct_exact_access
              ESTIMATE STATISTICS; end}");

        } catch (Exception ex) {
            System.out.println(ex.getMessage());
            ex.printStackTrace();
        }
    }

    private static String runStatement(Connection con, String statement)
      throws Exception {
        PreparedStatement cstmt = con.prepareStatement(statement);
        cstmt.execute(); //this is line 58
        cstmt.close();

        return count;
    }
}

Auf dem der code ausgeführt wird, erhalte ich folgende exception:

java.sql.SQLSyntaxErrorException: ORA-00900: ungültige SQL-Anweisung

oracle.jdbc.- Treiber.T4CTTIoer.processError(T4CTTIoer.java:440)

bei oracle.jdbc.- Treiber.T4CTTIoer.processError(T4CTTIoer.java:396)

bei oracle.jdbc.- Treiber.T4C8Oall.processError(T4C8Oall.java:837)

bei oracle.jdbc.- Treiber.T4CTTIfun.erhalten(T4CTTIfun.java:445)

bei oracle.jdbc.- Treiber.T4CTTIfun.doRPC(T4CTTIfun.java:191)

bei oracle.jdbc.- Treiber.T4C8Oall.doOALL(T4C8Oall.java:523)

bei oracle.jdbc.- Treiber.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)

bei oracle.jdbc.- Treiber.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1010)Zeit : -1307015416548

oracle.jdbc.- Treiber.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1315)

bei oracle.jdbc.- Treiber.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576)

bei oracle.jdbc.- Treiber.OraclePreparedStatement.execute(OraclePreparedStatement.java:3677)

bei oracle.jdbc.- Treiber.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1374)

am Main.prepareStatement(Main).java:58)

am Main.main(Main.java:29)

Was falsch läuft, und wie ich es beheben kann?

Schreibe einen Kommentar