Ошибка Oracle «Команда SQL не завершена должным образом» (ORA-00933) для подготовленного оператора Java - PullRequest
1 голос
/ 18 октября 2011

Я получаю ORA-00933 при создании следующего подготовленного оператора для Oracle 10g (10.2.0.1.0) с использованием JDBC:

conn.prepareStatement("INSERT INTO fx_tv_date (id, mp, doc_id, effective, actual, stale, val) VALUES (?, ?, ?, ?, ?, ?, ?)");

В этой строке выдается следующее исключение ...

java.sql.SQLException: ORA-00933: SQL command not properly ended

  oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
  oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
  oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
  oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
  oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
  oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:801)
  oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1039)
  oracle.jdbc.driver.T4CStatement.executeMaybeDescribe(T4CStatement.java:841)
  oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1134)
  oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1274)
  org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:205)
  org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:205)

Это прекрасно работает в MySQL и MS SQL Server, поэтому я думаю, что это синтаксическая разница с Oracle, но, глядя в онлайн, я не вижу причины.Для ясности вот подготовленное заявление само по себе:

INSERT INTO fx_tv_date (id, mp, doc_id, effective, actual, stale, val) VALUES (?, ?, ?, ?, ?, ?, ?)

Спасибо!

1 Ответ

2 голосов
/ 18 октября 2011

Этот метод используется excuteUpdate, а не executeQuery для выполнения DML.

...