Ini topik yang kelihatannya dasar,
tapi jujur… saya dulu sering kepleset di sini.
Kodenya jalan.
Tidak error.
Tapi hasilnya tidak sesuai harapan.
Contoh Kasus yang Sering Terjadi
Di kepala saya dulu:
“v_total akan bertambah terus.”
Hasilnya?
👉 tetap 0.
Kenapa Bisa Begitu?
Karena ada dua v_total berbeda:
-
Satu di blok luar
-
Satu lagi di blok dalam
Variabel di blok dalam:
-
Menimpa nama
-
Tapi tidak mengubah variabel luar
Ini bukan bug.
Ini cara kerja scope.
Kesalahan yang Dulu Sering Saya Lakukan
Saya sering:
-
Pakai nama variabel yang sama
-
Bikin blok
DECLAREkecil tanpa sadar -
Lalu bingung kenapa nilainya “nggak nyampe keluar”
Dan ini sering kejadian di:
-
Loop
-
Exception
-
Sub-block kecil
Versi yang Lebih Aman
Biasanya saya sekarang:
-
Deklarasi variabel di level atas
-
Hindari
DECLAREtambahan kecuali perlu
Lebih jelas.
Lebih minim kejutan.
Catatan Pengalaman Kerja
Di satu debugging, saya pernah:
-
Fokus ke query
-
Fokus ke logic
-
Padahal masalahnya cuma scope variabel
Begitu sadar:
“Oh… ini variabel yang beda.”
Debug selesai dalam 2 menit.
Prinsip Sederhana yang Saya Pakai Sekarang
Kalau hasil aneh tapi:
-
Tidak ada error
-
Logic kelihatannya benar
Saya langsung cek:
-
Scope variabel
-
Apakah ada blok
DECLAREtersembunyi -
Nama variabel yang sama
Sering kali jawabannya ada di situ.
Penutup
PL/SQL itu bahasa yang rapi,
tapi tetap punya jebakan kecil.
Variable scope mungkin kelihatan sepele,
tapi bisa bikin logika melenceng jauh.
Sampai catatan Rabu berikutnya 👋

0 comments:
Post a Comment