Wednesday, July 15, 2026

 

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

Popular Posts