Stored procedure adalah kumpulan perintah SQL yang disimpan di database dengan nama tertentu dan bisa dipanggil kapan aja tanpa perlu nulis ulang SQL-nya. Cocok buat logic bisnis yang sering dipakai berulang atau operasi yang butuh beberapa langkah berurutan sekaligus.
Stored procedure adalah kumpulan satu atau lebih statement SQL yang disimpan di dalam database dengan nama tertentu dan bisa dipanggil kapan aja. Kalau query biasa itu kamu tulis saat itu juga dan langsung eksekusi, stored procedure sudah tersimpan permanen di database - tinggal panggil namanya dan prosesnya langsung jalan.
Bayangkan kayak resep yang disimpan di database: kamu definisikan langkah-langkahnya sekali, beri nama, dan kapanpun butuh, tinggal sebut namanya. Dengan atau tanpa bahan input (parameter), stored procedure bisa mengeksekusi serangkaian operasi dan bahkan mengembalikan hasil.
Ada beberapa alasan kenapa stored procedure jadi fitur yang ada di hampir semua database relasional besar:
Reusability: Logic bisnis yang sama nggak perlu ditulis ulang di setiap aplikasi atau query yang membutuhkannya. Definisi sekali, pakai dimana-mana.
Keamanan: Kamu bisa kasih user akses untuk memanggil stored procedure tanpa kasih akses langsung ke tabel yang ada di baliknya. Cara aman buat expose operasi tertentu ke pengguna atau aplikasi dengan privilege terbatas.
Performa: Stored procedure dikompilasi dan query plan-nya bisa di-cache, jadi eksekusinya bisa lebih cepat dibanding SQL yang sama kalau dikirim fresh setiap kali.
Enkapsulasi logika: Business logic tersimpan di database, nggak tersebar di beberapa aplikasi berbeda yang mungkin pakai bahasa pemrograman berbeda-beda.
| Fitur | Stored Procedure | Function | View |
|---|---|---|---|
| Menerima parameter | Ya | Ya | Tidak |
| Bisa kembalikan nilai | Ya (via OUT parameter atau result set) | Ya (single return value) | Ya (result set, read-only) |
| Bisa modifikasi data | Ya | Biasanya terbatas per database | Tidak |
| Cara memanggil | CALL atau EXECUTE | Dipakai dalam ekspresi query | Dipakai seperti tabel biasa |
| Bisa punya kondisional dan loop | Ya (IF/ELSE, WHILE, error handling) | Ya (terbatas di beberapa DB) | Tidak |
Stored procedure bukan cuma kumpulan SELECT dan INSERT. Di dalamnya bisa ada:
Inilah yang membuat stored procedure cocok buat logika yang kompleks dan multi-step, bukan hanya query satu langkah.
Stored procedure cocok buat operasi yang sering diulang, butuh beberapa langkah berurutan, atau perlu logika kondisional yang nggak bisa diekspress dalam satu query. Contoh umum: proses end-of-day batch calculation, validasi dan load data ke table produksi, atau operasi yang butuh decision tree berdasarkan kondisi tertentu.
Tapi ada trade-off yang perlu dipertimbangkan. Logika yang tersimpan di database lebih susah di-test, di-version-control dengan Git, dan di-deploy dibanding kode di application layer. Banyak tim engineering modern cenderung menaruh business logic di application layer dan biarkan database fokus ke penyimpanan dan query data.
Pilihan terbaik tergantung konteks arsitektur tim kamu - nggak ada jawaban universal yang selalu benar untuk semua situasi.
Udah paham Stored Procedure? Lanjut latihan SQL dan Excel yuk!
Latihan interaktif, langsung di browser.