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

Postingan populer dari blog ini

KRIPTOGRAFI SIMETRIS DAN ASIMETRIS