1
Я пытаюсь выполнить следующий код.Подготовленный отчет с ошибкой DB2 SQL
public static void main(String[] args) throws Exception {
Connection connection = null;
try {
Class.forName("com.ibm.db2.jcc.DB2Driver");
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
try {
System.out.println();
connection = DriverManager.getConnection("jdbc:db2://localhost:port/database", username, password);
connection.setAutoCommit(false);
// String plsql = "BEGIN INSERT INTO t VALUES(42); COMMIT; END;";
String plsql = "BEGIN UPDATE TABLE SET PROPERTY_VALUE='test6' where property_name='TEST'; COMMIT; END;";
PreparedStatement pstatement = connection.prepareStatement(plsql);
pstatement.execute();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
И я получаю следующее сообщение об ошибке:
com.ibm.db2.jcc.b.co: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=END;NAME='TEST'; COMMIT;;END, DRIVER=3.53.70
Как решить эту проблему. почему подготовленный оператор поддерживает этот сценарий?
Вам нужно удалить самую последнюю точку с запятой после 'END', из вашего оператора. – mustaccio
Я попытался удалить точку с запятой после END. Теперь я получаю другую ошибку. – jane
com.ibm.db2.jcc.b.co: Ошибка DB2 SQL: SQLCODE = -104, SQLSTATE = 42601, SQLERRMC = вызов BEGIN; BEGIN-OF-STATEMENT;, DRIVER = 3.53.70 –
jane