Melakukan di dalam satu lingkaran umumnya merupakan ide yang buruk (begitu juga mengizinkan alat apa pun untuk secara otomatis melakukan).
Melakukan di dalam satu lingkaran membuatnya lebih sulit untuk menulis kode yang dapat dimulai ulang. Apa yang terjadi jika Anda menemukan kesalahan setelah 3 iterasi? Anda sekarang telah berhasil mengkomit hasil dari 2 UPDATE
pernyataan. Agaknya, Anda perlu mencari tahu baris mana yang diperbarui dan menulis kode untuk membalikkan pembaruan atau Anda harus menambahkan kode yang menghindari upaya memperbarui data untuk dua yearid
yang berhasil tersebut nilai-nilai. Itu pasti mungkin. Tetapi ini melibatkan penulisan banyak kode untuk melacak kemajuan Anda dan umumnya membuat kode Anda jauh lebih kompleks.
Melakukan di dalam satu lingkaran membuat kode Anda jauh lebih lambat. Melakukan umumnya merupakan operasi yang agak mahal. Oleh karena itu, melakukannya dalam satu lingkaran umumnya merupakan ide yang buruk. Ini bukan masalah jika Anda hanya memiliki beberapa lusin iterasi loop. Tetapi jika Anda memiliki ratusan atau ribuan iterasi, Anda dapat dengan mudah menghabiskan sebagian besar waktu Anda untuk berkomitmen.
Melakukan di dalam loop secara substansial meningkatkan risiko bahwa Anda akan menyebabkan kesalahan ORA-01555. Kueri Anda terhadap MyTable
membutuhkan tampilan data yang konsisten untuk dibaca. Namun, jika Anda melakukan di dalam loop, Anda memberi tahu Oracle bahwa sesi Anda tidak lagi membutuhkan UNDO
yang lebih lama data. Jika Oracle kebetulan membersihkan UNDO
data yang Anda butuhkan untuk iterasi loop berikutnya, Anda akan mendapatkan kesalahan. Dan kemudian Anda kembali berurusan dengan kode yang tidak dapat dimulai ulang di mana Anda berhasil melewati N iterasi tetapi Anda tidak tahu tahun mana yang telah diproses atau yang perlu diproses.
Melakukan di dalam loop dapat membuat masalah konsistensi data. Jika beberapa sesi lain menjalankan laporan, misalnya, laporan tersebut mudah melihat data yang diperbarui sebagian yang sering kali berarti bahwa data tersebut tidak konsisten. Jika data selama 3 tahun telah berubah tetapi tahun lainnya tidak, akan sangat sulit untuk memahami laporan dan orang (atau proses) dapat dengan mudah membuat keputusan yang salah.
Melakukan di dalam satu lingkaran juga membuat kode Anda kurang dapat digunakan kembali. Jika kode Anda menyertakan commit (atau rollback selain ke savepoint yang Anda buat di dalam blok), kode tersebut tidak dapat dipanggil oleh bagian kode lain yang belum ingin transaksinya dilakukan. Hal itu membuat orang mencoba mengimplementasikan kembali logika Anda tanpa kontrol transaksi atau salah melanggar integritas transaksional yang tak terhindarkan membuat mereka membangun aplikasi yang menimbulkan masalah konsistensi data.