BASIS DATA FUNCTION DAN STORED PROCEDURE
Halo Gan! Bertemu lagi dengan
saya, ya kali ini saya akan membahas tentang Stored Procedure. Lalu apa itu SP
? Function dan Stored Procedure merupakan suatu kumpulan perintah atau
statement yang disimpan dan dieksekusi di server database MySQL. Dengan SP kita
dapat menyusun program sederhana berbasis sintaks SQL untuk menjalankan fungsi
tertentu.
Beberapa keuntungan menggunakan
Stored Procedure :
è Lebih
cepat
è Menghilangkan
duplikasi proses
è Pemeliharaan
yang mudah
è Menigkatkan
keamanan database
Pada contoh kali ini saya akan
mencoba menggunakan procedure CALL untuk menampilkan kata “Hello World” yang
mengaitkan penggunaan DELIMITER.
Sebelumnya perlu Agan-agan ketahui, apa itu fungsi dari DELIMITER ? DELIMITER merupakan
sintaks untuk mengubah tanda pengakhir baris suatu baris perintah pada SQL yang
awalnya menggunakan tanda semicolon (;) menjadi tanda yang agan-agan inginkan berupa
karakter. Semisal fungsi ”DELIMITER
/” (tanpa tanda kutip) maka untuk mengakhiri perintah baris pemrograman tidak
lagi menggunakan tanda semicolon/titik koma, yakni cukup menggunakan karakter
yang telah disimbolkan seperti tanda slash (/) pada contoh penggunaan DELIMITER diatas.
CONTOH berupa penggunaan sintaks
SQL
DELIMITER /
CREATE PROCEDURE hello()
BEGIN
SELECT "Hello World";
END /
DELIMITER /
Fungsi CALL diatas digunakan
untuk memanggil fungsi yang telah kita definisikan dengan nama PROCEDURE hello(). Maka hasilnya akan
muncul “Hello World” karena PROCEDURE
hello() memiliki fungsi untuk menampilkan kata “Hello World” sesuai dengan
deklarasi fungsi tersebut.
Pada contoh selanjutnya saya akan
membuat fungsi pemanggilan dari jumlahPelanggan
yang mengambil data dari tabel pelanggan pada
database sistem_pemesanan.
DELIMITER /
CREATE PROCEDURE jumlahPelanggan()
BEGIN
SELECT COUNT(*) FROM pelanggan;
END /
DELIMITER ;
HASILNYA :
Pada contoh selanjutnya saya
menggunakan contoh yang sama seperti sebelumnya namun memiliki cara pemanggilan
fungsi yang berbeda yakni menggunakan query SELECT.
DELIMITER /
CREATE PROCEDURE jumlahPelanggan2(OUT hasil INT)
BEGIN
SELECT COUNT(*) INTO hasil FROM pelanggan;
END /
DELIMITER ;
HASILNYA : (cara pemanggilan
fungsi menggunakan query SELECT)
CALL jumlahPelanggan2(@jumlah);
SELECT @jumlah AS 'Jumlah Pelanggan';
DELIMITER /
CREATE PROCEDURE jumlahItemBarang (pelanggan VARCHAR(5))
BEGIN
SELECT SUM(detil_pesan.jumlah)
FROM pesan, detil_pesan
WHERE pesan.id_pesan = detil_pesan.id_pesan
AND pesan.id_pelanggan = pelanggan;
END /
DELIMITER ;
DELIMITER /
CREATE FUNCTION jumlahStockBarang(produk VARCHAR(5))
RETURNS INT
BEGIN
DECLARE jumlah INT;
SELECT COUNT(*) INTO jumlah FROM produk
WHERE id_produk = produk;
RETURN jumlah;
END /
DELIMITER ;
Untuk pemanggilannya menggunakan SELECT :
SELECT jumlahStockBarang('B0001');
Menghapus Stored Procedure
Untuk
menghapus Stored Procedure dapat menggunakan sintaks berikut DROP {PROCEDURE|FUNCTION} [IF EXISTS]
sp_name;
DROP PROCEDURE IF EXISTS jumlahPelanggan;
DROP PROCEDURE IF EXISTS jumlahStockBarang;
VARIABLE
Variable
digunakan untuk menyimpan suatu nilai secara temporer (sementara) di memori.
Variable akan hilang saat sudah tidak digunakan lagi. Sintaksnya sebagai
berikut :
DECLARE variable_name DATATYPE [DEFAULT value];
Pada contoh kasus ini saya
menggunakan fungsi pemanggilan perhitungan umur.
DELIMITER $$
CREATE FUNCTION HitungUmurkuYa (lahir DATE)
RETURNS INT
BEGIN
DECLARE thn_skrg, thn_lhr INT;
SET thn_skrg = 2020;
SET thn_lhr = 2002;
RETURN thn_skrg - thn_lhr;
END $$
DELIMITER ;
Untuk memanggil fungsi tersebut
menggunakan query SELECT.
SELECT HitungUmurkuYa (2020 -
2002);
KONDISI
DELIMITER /
CREATE FUNCTION cek_pelanggan (pelanggan varchar(5))
RETURNS VARCHAR(100)
BEGIN
DECLARE jumlah INT;
SELECT COUNT(id_pesan) INTO jumlah FROM pesan
WHERE id_pelanggan=pelanggan;
IF (jumlah > 0) THEN
RETURN CONCAT("Anda sudah bertransaksi sebanyak", jumlah,
"kali");
ELSE
RETURN "Anda belum pernah melakukan transaksi";
END IF;
END /
DELIMITER ;
Fungsi pemanggilan :
SELECT cekPelanggan (0);
CASE
DELIMITER #
CREATE FUNCTION getDiskon(jumlah INT)
RETURNS INT(11)
BEGIN
DECLARE diskon INT;
CASE
WHEN (jumlah >= 100) THEN
SET diskon = 10;
WHEN (jumlah >= 50 AND jumlah < 100) THEN
SET diskon = 5;
WHEN (jumlah >= 20 AND jumlah < 50) THEN
SET diskon = 3;
ELSE
SET diskon = 0;
END CASE;
RETURN diskon;
END #
DELIMITER ;
Pemanggilan fungsi :
getDiskon (75);
!!SEKIAN TERIMAKASIH AGAN-AGAN!!
Komentar
Posting Komentar