Package vs Procedure: Kapan Sebaiknya Pakai yang Mana?
Kalau baru mulai belajar PL/SQL, biasanya kita sering membuat procedure.
Wajar sih.
Procedure:
- Mudah dibuat
- Mudah diuji
- Cocok untuk kebutuhan kecil
Tapi setelah beberapa tahun bekerja, saya mulai sering bertemu dengan package.
Dan jujur saja, dulu saya sempat bingung:
"Kalau procedure sudah jalan, kenapa harus pakai package?"
Awalnya Semua Terlihat Sama
Misalnya ada procedure sederhana:
CREATE OR REPLACE PROCEDURE update_salary ( p_emp_id NUMBER, p_amount NUMBER ) IS BEGIN UPDATE employees SET salary = salary + p_amount WHERE employee_id = p_emp_id; END; /
Tidak ada yang salah.
Procedure ini:
- Mudah dipanggil
- Mudah dibaca
- Mudah dipahami
Masalah Mulai Muncul Saat Program Bertambah
Beberapa bulan kemudian biasanya muncul:
- Procedure update gaji
- Procedure hitung bonus
- Procedure validasi data
- Function cek grade karyawan
- Function hitung pajak
Jumlah object mulai banyak.
Lalu muncul pertanyaan:
"Procedure ini masih satu kelompok dengan yang mana ya?"
Di Sini Package Mulai Berguna
Misalnya:
CREATE OR REPLACE PACKAGE employee_pkg AS PROCEDURE update_salary( p_emp_id NUMBER, p_amount NUMBER); FUNCTION get_bonus( p_emp_id NUMBER) RETURN NUMBER; END employee_pkg; /
Sekarang semuanya punya rumah yang sama.
Saat melihat:
employee_pkg.update_salary(...) employee_pkg.get_bonus(...)
Kita langsung tahu:
"Oh, ini fungsi yang berhubungan dengan employee."
Keuntungan yang Paling Saya Rasakan
Bukan soal performa dulu.
Yang paling terasa justru:
1. Lebih Mudah Dicari
Kalau ada masalah terkait employee:
Saya langsung buka:
employee_pkg
Tidak perlu mencari puluhan procedure terpisah.
2. Kode Lebih Terorganisir
Project besar biasanya hidup bertahun-tahun.
Kalau semua object berdiri sendiri:
- Sulit dirawat
- Sulit dicari
- Sulit dipahami developer baru
Package membantu menjaga kerapihan.
3. Shared Variable dan Logic
Ini salah satu fitur yang dulu jarang saya manfaatkan.
Package bisa memiliki variable yang digunakan bersama oleh beberapa procedure atau function di dalamnya.
Tidak selalu diperlukan.
Tapi untuk kasus tertentu sangat membantu.
Apakah Procedure Sudah Tidak Perlu?
Tentu masih perlu.
Saya pribadi masih membuat procedure biasa untuk:
- Script sederhana
- Utility kecil
- Pekerjaan sekali pakai
- Proof of concept
Tidak semua hal harus dimasukkan ke package.
Catatan Pengalaman Kerja
Di salah satu project lama, jumlah procedure sudah ratusan.
Saat ada bug:
- Nama object mirip-mirip
- Sulit mengetahui hubungan antar program
- Waktu debugging jadi lebih lama
Setelah banyak logic dipindahkan ke package:
- Struktur lebih jelas
- Developer baru lebih cepat memahami sistem
- Maintenance lebih nyaman
Prinsip yang Saya Pakai Sekarang
Kalau logic:
- Kecil
- Berdiri sendiri
- Tidak berkembang
Saya pakai procedure biasa.
Kalau logic:
- Satu domain yang sama
- Banyak function terkait
- Akan terus berkembang
Saya mulai mempertimbangkan package.
Penutup
Dulu saya mengira package itu cuma "wadah procedure".
Setelah beberapa tahun bekerja, saya sadar:
Package bukan soal gaya coding.
Tapi soal menjaga kode tetap masuk akal ketika sistem semakin besar.
Dan semakin lama saya bekerja dengan Oracle, semakin sering saya menghargai kode yang mudah dirawat dibanding kode yang sekadar berjalan.
Sampai catatan Rabu berikutnya 👋

0 comments:
Post a Comment