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. mysqli拡張機能を使用してPHPでMySQLデータベースに接続する方法は?

    2. MySQLなぜcursor.execute(sql、multi =True)は機能しないが、2 cursor.execute(sql)は機能するのですか?

    3. InnoDBでインデックスを再構築します

    4. OracleXMLDBリポジトリにXMLファイルをインポートします