Join pada database

Stored Procedure SQL (Tabel paket) - Catatan Blogger Dark Mode

  1.  Pengertian

Stored Procedure (prosedur tersimpan) adalah sekumpulan perintah SQL yang dibungkus menjadi satu kesatuan, diberi nama, dan disimpan langsung di dalam server database. Stored Procedure sangat penting karena kita cukup menulis logika query satu kali saja (mirip seperti fungsi pada bahasa pemrograman), lalu memanggil namanya kapan saja dibutuhkan menggunakan perintah CALL tanpa harus menulis ulang seluruh query dari awal.

Kapan Stored Procedure digunakan? Prosedur digunakan saat aplikasi sering menjalankan query yang berulang (repetitive), menyimpan logika bisnis di dalam database, meningkatkan keamanan (user hanya diberi akses menjalankan prosedur tanpa akses langsung ke tabel), serta menghemat beban jaringan.

Contoh saya punya 1 tabel bernama paket:

CREATE TABLE `paket` (

  `id_paket` varchar(50) NOT NULL,

  `nama_paket` varchar(200) NOT NULL,

  `harga_paket` int(11) DEFAULT NULL,

  `banyak_pengguna` int(11) DEFAULT NULL,

  PRIMARY KEY (`id_paket`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Query Struktur Tabel paket
id_paket nama_paket harga_paket banyak_pengguna
PKT-001 Paket Hemat 50 Mbps 250000 10
PKT-002 Paket Keluarga 100 Mbps 375000 6
Tabel paket (Data Awal)

    2. Macam - macam contoh Stored Procedure pada tabel paket:

a. Prosedur Menambah Paket Baru (tambah_paket_baru)

Prosedur ini digunakan untuk memasukkan baris paket baru ke dalam tabel paket, di mana kolom banyak_pengguna otomatis diatur bernilai awal 0.

Query: 

DELIMITER $$

CREATE PROCEDURE tambah_paket_baru (

    IN p_id_paket VARCHAR(50),

    IN p_nama_paket VARCHAR(200),

    IN p_harga_paket INT(11)

)

BEGIN

    INSERT INTO paket (id_paket, nama_paket, harga_paket, banyak_pengguna)

    VALUES (p_id_paket, p_nama_paket, p_harga_paket, 0);

END $$

DELIMITER ;


CALL tambah_paket_baru('PKT-003', 'Paket Gamer 150 Mbps', 499000);

Hasil: 

id_paket nama_paket harga_paket banyak_pengguna
PKT-001 Paket Hemat 50 Mbps 250000 10
PKT-002 Paket Keluarga 100 Mbps 375000 6
PKT-003 Paket Gamer 150 Mbps 499000 0
Hasil setelah CALL tambah_paket_baru

b. Prosedur Menambah Jumlah Pengguna (tambah_pengguna_paket)

Prosedur ini digunakan untuk memperbarui (UPDATE) kolom banyak_pengguna dengan menambahkan jumlah pengguna baru berdasarkan id_paket yang dipilih.

Query:

DELIMITER $$

CREATE PROCEDURE tambah_pengguna_paket (

    IN p_id_paket VARCHAR(50),

    IN p_jumlah_baru INT(11)

)

BEGIN

    UPDATE paket

    SET banyak_pengguna = banyak_pengguna + p_jumlah_baru

    WHERE id_paket = p_id_paket;

END $$

DELIMITER ;


CALL tambah_pengguna_paket('PKT-001', 5);

Hasil:

id_paket nama_paket harga_paket banyak_pengguna
PKT-001 Paket Hemat 50 Mbps 250000 15
PKT-002 Paket Keluarga 100 Mbps 375000 6
PKT-003 Paket Gamer 150 Mbps 499000 0
banyak_pengguna pada PKT-001 bertambah dari 10 menjadi 15

c. Cara Membaca Query Stored Procedure

Berikut adalah cara membaca setiap baris perintah pada pembuatan dan pemanggilan Stored Procedure di atas:

    - DELIMITER $$ : Mengubah tanda akhir perintah SQL sementara dari titik koma (;) menjadi $$ agar titik koma di dalam BEGIN...END tidak menghentikan pembuatan prosedur.

    - CREATE PROCEDURE nama_prosedur (...) : Perintah untuk membuat prosedur baru beserta daftar parameter di dalam tanda kurung.

    - IN p_id_paket VARCHAR(50) : Kata kunci IN berarti parameter masukan (input). p_id_paket adalah nama variabel penampung nilai yang dikirim saat prosedur dipanggil.

    - BEGIN ... END $$ : Pembuka dan penutup isi prosedur tempat kita menuliskan perintah INSERT, UPDATE, DELETE, atau SELECT.

    - DELIMITER ; : Mengembalikan tanda akhir perintah SQL kembali menjadi titik koma (;).

    - CALL tambah_paket_baru(...) : Perintah untuk memanggil/menjalankan prosedur beserta nilai datanya.


    3. Tempat Praktek SQL (Ubah & Jalankan Query):

Silakan ubah kode SQL di bawah ini (bisa membuat prosedur baru, mengubah nilai parameter pada CALL, atau menjalankan query biasa) lalu klik tombol Jalankan Query untuk melihat perubahannya pada bagian Hasil:

Query:

Siap dijalankan. Silakan edit kode SQL di atas lalu klik "Jalankan Query".

Hasil:

id_paket nama_paket harga_paket banyak_pengguna
Tabel paket (Hasil Live Praktek)

0 komentar:

Posting Komentar