Kalau dipikir-pikir, error PL/SQL itu jarang yang benar-benar “aneh”.
Yang bikin lama biasanya justru hal kecil yang terlewat.
Dan ini biasanya kejadian kalau:
-
Sudah lama nggak pegang PL/SQL
-
Atau lagi buru-buru
-
Atau merasa “ini pasti gampang”
(Spoiler: justru di situ jebakannya 😅)
1️⃣ ORA-06502: Numeric or Value Error
Ini salah satu error yang paling sering saya temui… dan paling bikin mikir.
Contoh sederhana:
Sekilas aman.
Tapi begitu dijalankan… boom 💥
Kenapanya simpel:
-
Panjang string lebih besar dari ukuran variabel
-
Tapi saat fokus ke logika, hal kecil ini sering luput
Pelajaran:
Kalau error ini muncul, cek ukuran variabel dulu, jangan langsung nuduh query.
2️⃣ SELECT INTO yang Ternyata Balik Lebih dari Satu Baris
Ini klasik.
Di kepala kita:
“Ah, cuma satu data kok.”
Di database:
“Ini ada 5 baris, bro.”
Akhirnya:
Dan biasanya baru sadar setelah:
-
Cek data manual
-
Atau ditambah
ROWNUM = 1(yang kadang cuma jadi tambalan)
3️⃣ Lupa COMMIT, Padahal Procedure Jalan Normal
Ini bukan error, tapi jebakan mental.
Procedure jalan:
-
Tidak ada error
-
Output muncul
-
Tapi data… nggak berubah
Contoh:
Dijalankan, sukses.
Tapi pas dicek ulang… datanya tetap sama.
Jawabannya sederhana:
👉 belum COMMIT
Lucunya, ini sering kejadian:
-
Di environment testing
-
Saat pindah dari aplikasi ke SQL Developer
4️⃣ Error karena NULL yang Tidak Disangka
PL/SQL dan NULL itu… hubungan cinta-benci.
Kalau v_total ternyata NULL, kondisi ini tidak pernah true.
Padahal di kepala kita:
“Kalau kosong ya 0 dong.”
Nope.
PL/SQL beda cerita.
Solusi paling aman:
Catatan Pengalaman
Di satu project lama, saya pernah:
-
Ngejar error berjam-jam
-
Fokus ke query yang panjang
-
Padahal penyebabnya cuma salah ukuran VARCHAR2
Sejak itu, setiap debug PL/SQL, saya selalu mulai dari:
-
Ukuran variabel
-
Jumlah data
SELECT INTO -
NULL handling
-
COMMIT / ROLLBACK
Baru ke logika rumit.
Penutup
PL/SQL itu jarang “jahat”.
Yang sering bikin lama justru asumsi kita sendiri.
Catatan minggu ini cuma pengingat:
sebelum menyalahkan Oracle, cek dulu hal-hal kecil.
Catatan berikutnya kemungkinan bahas:
-
Procedure lambat padahal query cepat
-
Atau loop yang diam-diam bikin performa jatuh
Sampai catatan berikutnya 👋

0 comments:
Post a Comment