Javaでは追加のみが許可されませんか?プリペアドステートメントの文字列パラメータで、?プレースホルダーの場合は、SQLを指定するためのパラメーターのみです。
あなたの場合、2つのプリペアドステートメントオブジェクトが必要になる場合があり、ループスルーで、どちらを呼び出すかを決定できます。したがって、次のようになります。
PreparedStatement insertPstmt = connection.prepareStatement("INSERT INTO MY_TABLE VALUES(?,?,?,?)");
PreparedStatement updatePstmt = connection.prepareStatement("UPDATE MY_TABLE, SET MY_VAL=? WHERE MY_VAL IS NULL");
While (<condition>) {
If (<insert condition>) {
// use insert pstmt and add batch
} else {
// use update pstmt and add batch
}
}
insertPstmt.executeBatch();
updatePstmt.executeBatch();
更新に依存する挿入がある場合は、それに応じてバッチを実行できます。これにより、更新が正しく機能することが確認されます。更新に依存しない可能性があるため、最初に挿入を実行することを考えます。