Stored Procedure

Lanjutan

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.

Apa Itu Stored Procedure?

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.

Kenapa Stored Procedure Ada?

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.

Stored Procedure vs Function vs View

FiturStored ProcedureFunctionView
Menerima parameterYaYaTidak
Bisa kembalikan nilaiYa (via OUT parameter atau result set)Ya (single return value)Ya (result set, read-only)
Bisa modifikasi dataYaBiasanya terbatas per databaseTidak
Cara memanggilCALL atau EXECUTEDipakai dalam ekspresi queryDipakai seperti tabel biasa
Bisa punya kondisional dan loopYa (IF/ELSE, WHILE, error handling)Ya (terbatas di beberapa DB)Tidak

Apa yang Bisa Ada di Dalamnya?

Stored procedure bukan cuma kumpulan SELECT dan INSERT. Di dalamnya bisa ada:

  • Parameter input dan output
  • Variabel lokal dengan tipe data tertentu
  • Kondisional IF/ELSE atau CASE
  • Loop seperti WHILE atau FOREACH
  • Error handling dengan TRY/CATCH atau EXCEPTION
  • Transaction management dengan BEGIN, COMMIT, dan ROLLBACK

Inilah yang membuat stored procedure cocok buat logika yang kompleks dan multi-step, bukan hanya query satu langkah.

Kapan Pakai, Kapan Tidak?

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.

Lanjut Latihan

Udah paham Stored Procedure? Lanjut latihan SQL dan Excel yuk!

Latihan interaktif, langsung di browser.

Mulai Latihan →