Я пытаюсь использовать следующий код для запуска инструкции PL / SQL на моем сервере базы данных.
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;
}
}
При запуске кода я получаю следующее исключение:
java.sql.SQLSyntaxErrorException: ORA-00900: недопустимый оператор SQL
at oracle.jdbc.driver.T4CTTIoer.processError (T4CTTIoer.java:440)
в oracle.jdbc.driver.T4CTTIoer.processError (T4CTTIoer.java:396)
в oracle.jdbc.driver.T4C8Oall.processError (T4C8Oall.java:837)
в oracle.jdbc.driver.T4CTTIfun.receive (T4CTTIfun.java:445)
в oracle.jdbc.driver.T4CTTIfun.doRPC (T4CTTIfun.java:191)
в oracle.jdbc.driver.T4C8Oall.doOALL (T4C8Oall.java:523)
в oracle.jdbc.driver.T4CPreparedStatement.doOall8 (T4CPreparedStatement.java:207)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows (T4CPreparedStatement.java:1010) Время: -1307015416548
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout (OracleStatement.java:1315)
в oracle.jdbc.driver.OraclePreparedStatement.executeInternal (OraclePreparedStatement.java:3576)
в oracle.jdbc.driver.OraclePreparedStatement.execute (OraclePreparedStatement.java:3677)
в oracle.jdbc.driver.OraclePreparedStatementWrapper.execute (OraclePreparedStatementWrapper.java:1374)
at Main.prepareStatement (Main.java:58)
в Main.main (Main.java:29)
Что не так, и как я могу это исправить?