Wednesday, February 11, 2026

 Kalau sudah lama ngoding PL/SQL, cursor itu terasa “alami”.

Rapi, terstruktur, dan kelihatan profesional.

Masalahnya… tidak selalu perlu.


Contoh Pola yang Dulu Sering Saya Pakai

FOR rec IN ( SELECT employee_id, salary FROM employees ) LOOP DBMS_OUTPUT.PUT_LINE(rec.employee_id || ' - ' || rec.salary); END LOOP;

Tidak salah.
Tapi sering kali overkill.


Kasus Nyata

Di satu proses report:

  • Datanya ribuan

  • Hasilnya cuma dipindahkan ke tabel lain

Tetap pakai cursor + loop.

Hasilnya:

  • Jalan

  • Tidak error

  • Tapi lambat


Alternatif yang Lebih Sederhana

Kalau tujuannya cuma memindahkan atau memproses data massal:

INSERT INTO report_table (employee_id, salary) SELECT employee_id, salary FROM employees;

Tanpa loop.
Tanpa cursor.
Lebih ramah performa.


Kapan Cursor Masih Masuk Akal?

Cursor masih penting kalau:

  • Ada logic kompleks per baris

  • Banyak IF / kondisi khusus

  • Proses per record memang beda-beda

Tapi kalau:

  • Logic sama

  • Datanya banyak

  • Bisa diselesaikan SQL

Cursor biasanya bukan pilihan terbaik.


Kesalahan yang Dulu Sering Saya Lakukan

Saya dulu sering mikir:

“Kalau pakai cursor, berarti lebih aman.”

Padahal:

  • Aman ≠ efisien

  • Rapi ≠ cepat

Setelah beberapa kali kena masalah performa,
saya mulai biasakan:

SQL dulu, cursor belakangan.


Prinsip Sederhana yang Sekarang Saya Pakai

Sebelum pakai cursor, saya selalu tanya:

  1. Bisa pakai satu SQL?

  2. Perlu loop?

  3. Datanya besar atau kecil?

Kalau jawabannya:

  • Bisa SQL

  • Tidak perlu loop

  • Data besar

👉 cursor saya coret.


Penutup

Cursor bukan musuh.
Tapi juga bukan solusi untuk semua hal.

PL/SQL itu soal memilih alat yang pas,
bukan sekadar yang paling familiar.

Sampai catatan Rabu berikutnya 👋

0 comments:

Post a Comment

Popular Posts