Ruang penulis
← Kembali ke jurnal
Oracle

PL/SQL Oracle: menulis prosedur tersimpan pertama

Kenali struktur dasar PL/SQL lewat prosedur sederhana untuk memperbarui stok barang.

DTim Diary Coding · 07 Sep 2026 · 2 menit baca

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.

← Jelajahi catatan lainnya