Oracle
 sql >> база данни >  >> RDS >> Oracle

Пакетно вмъкване/актуализация на MyBatis за Oracle

Приетият отговор не е препоръчителният начин за обработка на пакетни операции. Той не показва истински пакетни оператори, тъй като режимът на пакетен изпълнител трябва да се използва при отваряне на сесия. Вижте тази публикация, в която сътрудник на код препоръчва, че правилният начин за пакетно актуализиране (или вмъкване) е да отворите сесия в пакетен режим и многократно да извикате актуализация (или вмъкване) за един запис.

Ето какво работи за мен:

public void updateRecords(final List<GisObject> objectsToUpdate) {
    final SqlSession sqlSession = MyBatisUtils.getSqlSessionFactory().openSession(ExecutorType.BATCH);
    try {
        final GisObjectMapper mapper = sqlSession.getMapper(GisObjectMapper.class);
        for (final GisObject gisObject : objectsToUpdate) {
            mapper.updateRecord(gisObject);
        }
        sqlSession.commit();
    } finally {
        sqlSession.close();
    }
}

Не използвайте foreach във вашата актуализация/вмъкване и се уверете, че той актуализира/вмъква само един запис. Сблъсках се с неразрешими грешки на оракул, като го направих според приетия отговор (невалиден знак, изявление не е приключило и т.н.). Както показва свързаната публикация, актуализацията (или вмъкването), показана в приетия отговор, всъщност е просто гигантско sql изявление.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете ненулево ограничение в oracle

  2. SQL грешка:ORA-02000:липсва ВИНАГИ ключова дума при създаване на таблица, базирана на колона за идентичност

  3. LOWER() Функция в Oracle

  4. Функцията PL/SQL в Oracle не може да види DBMS_AQ

  5. Има ли система за контрол на версиите за промени в структурата на базата данни?