Я уже узнал о синтаксисе INSERT ALL, и он отлично работает, пока я не хочу извлекать вставленные значения идентификатора.
В противоположность синтаксису INSERT ALL, я мог бы просто использовать mutliple INSERT INTOоператоры в транзакции, которые будут работать, но плохо влияют на производительность, как указано здесь: Лучший способ сделать многострочную вставку в Oracle? .
Это мой текущий код:
//Creation of INSERT INTO statement
//...
Statement statement = dbConnection.createStatement();
statement.executeUpdate(INSERT_SQL, new String[] {"someIDColumn"});
ResultSet idResulSet = statement.getGeneratedKeys();
//Usage of the generated keys
Это работает для одной строки, но если я попробую синтаксис INSERT ALL, я получу:
java.sql.SQLSyntaxErrorException: ORA-00933: команда SQL неправильно завершена
Причина: ошибка: 933, позиция: 187, Sql = ВСТАВИТЬ ВСЕ В bpos (artnr, bstnr, menge) ЗНАЧЕНИЯ (3, 31, 4) В INTO bpos (artnr, bstnr, menge) ЗНАЧЕНИЯ (5, 31,6) INTO значения bpos (artnr, bstnr, menge) (1, 31, 2) SELECT * FROM с двойным возвратом artnr INTO: 1, OriginalSql = ВСТАВИТЬ ВСЕ В ЗНАЧЕНИЯ bpos (artnr, bstnr, menge) (3, 31, 4)INTO bpos (artnr, bstnr, menge) VALUES (5, 31, 6) INTO bpos (artnr, bstnr, menge) VALUES (1, 31, 2) SELECT * FROM с двойным возвратом artnr INTO?, Ошибка Msg = ORA-00933: команда SQL неправильно завершена
Можно ли получить все вставленные идентификаторы после INSERT ALLутверждение?