PL/SQL Oracle: menulis prosedur tersimpan pertama
Kenali struktur dasar PL/SQL lewat prosedur sederhana untuk memperbarui stok barang.
Kenapa memakai prosedur tersimpan
Prosedur tersimpan menyimpan logika di dalam database sehingga bisa dipanggil ulang tanpa mengirim seluruh pernyataan SQL setiap kali. Ini juga membantu menjaga aturan bisnis tetap konsisten walau dipanggil dari aplikasi yang berbeda.
Struktur dasar PL/SQL
CREATE OR REPLACE PROCEDURE kurangi_stok (
p_produk_id IN NUMBER,
p_jumlah IN NUMBER
) AS
v_stok_sekarang NUMBER;
BEGIN
SELECT stok INTO v_stok_sekarang
FROM produk
WHERE produk_id = p_produk_id
FOR UPDATE;
IF v_stok_sekarang < p_jumlah THEN
RAISE_APPLICATION_ERROR(-20001, 'Stok tidak mencukupi');
END IF;
UPDATE produk
SET stok = stok - p_jumlah
WHERE produk_id = p_produk_id;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE;
END kurangi_stok;
/
Memanggil prosedur
BEGIN
kurangi_stok(p_produk_id => 101, p_jumlah => 3);
END;
/
Menangani error dengan jelas
RAISE_APPLICATION_ERROR memungkinkan Anda melempar pesan kesalahan khusus aplikasi dengan kode di rentang -20000 hingga -20999. Blok EXCEPTION memastikan perubahan dibatalkan lewat ROLLBACK jika terjadi kesalahan di tengah proses.
FOR UPDATE mengunci baris terkait
Klausa FOR UPDATE mengunci baris yang dibaca sampai transaksi selesai, mencegah transaksi lain mengubah stok yang sama secara bersamaan sebelum pengecekan selesai.
Latihan
Tambahkan parameter baru untuk mencatat riwayat perubahan stok ke tabel log setiap kali prosedur ini dipanggil.
