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

ORA-00604:възникна грешка при рекурсивен SQL ниво 1

Мисля, че PreparedStatement дефиницията трябва да бъде извадена от цикъла и повторно използвана в рамките на цикъла чрез извикване на clearParameters :

pstatement = db_connection.prepareStatement(PDSLnPConstants.UPSERT_SQL); // create a statement

for (Entry<Integer, LinkedHashMap<Integer, String>> entry : GUID_ID_MAPPING.entrySet()) {

    pstatement.setInt(1, entry.getKey());
    pstatement.setString(2, entry.getValue().get(PDSLnPConstants.CGUID_ID));
    pstatement.setString(3, entry.getValue().get(PDSLnPConstants.PGUID_ID));
    pstatement.setString(4, entry.getValue().get(PDSLnPConstants.SGUID_ID));
    pstatement.setString(5, entry.getValue().get(PDSLnPConstants.UID_ID));
    pstatement.setString(6, entry.getValue().get(PDSLnPConstants.ULOC_ID));
    pstatement.setString(7, entry.getValue().get(PDSLnPConstants.SLOC_ID));
    pstatement.setString(8, entry.getValue().get(PDSLnPConstants.PLOC_ID));
    pstatement.setString(9, entry.getValue().get(PDSLnPConstants.ALOC_ID));
    pstatement.setString(10, entry.getValue().get(PDSLnPConstants.SITE_ID));
    pstatement.executeUpdate();

    pstatement.clearParameters();

}

Може също да искате да проучите пакетната обработка (addBatch ). Ако тествате, може да се наложи да изчакате малко съществуващите „отворени“ курсори да бъдат изчистени.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да откриете грешки при компилиране на PLSQL

  2. Списък с територии, поддържани от базата данни на Oracle

  3. sbt изтегляне на артефакт от защитено с парола хранилище - oracle jdbc драйвер като управлявана зависимост

  4. Как да промените настройките за SQL Developer, за да разпознае правилно текущата версия на SDK

  5. Как да заявя име на база данни в Oracle SQL Developer?