Kelas XII-RPL SMKN 4 Bandung
Materi Basis Data Semester Genap
Menggunakan stored procedures/Function
di mysql
PENDAHULUAN
Stored procedure/Function merupakan
kumpulan perintah SQL atau statement yang
diberi nama dan disimpan di server database
MySQL.
SP biasanya berisi perintah-perintah umum
yang berhubungan dengan database, baik
perintah DDL maupun DML
KEUNTUNGAN MENGGUNAKAN SP
Lebih cepat, karena kumpulan perintah
query dijalankan langsung di server
Menghilangkan duplikasi proses,
pemeliharaan yang mudah
Meningkatkan keamanan database, aplikasi
yang memanggil SP tidak perlu mengetahui
isi di dalamnya
PEMBAGIAN SP (STORED
PROCEDURES)
Function : memiliki suatu nilai yang
dikembalikan (di return)
Procedure : tidak memiliki nilai yang
dikembalikan. Procedure pada umumnya
hanya berisi kumpulan proses yang tidak
menghasilkan value, biasanya hanya
menampilkan saja.
Bentuk Umum Procedure :
CREATE PROCEDURE sp_name
([proc_parameter[…..]])
[characteristic …] routine_body
Keterangan :
sp_nama : routine yg akan dibuat
proc_parameter : Parameter SP, yaitu :
1. In : parameter yang digunakan sebagai masukan
2. Out : parameter yang digunakan sebagai
keluaran
3. InOut : parameter yang digunakan sbg masukan
sekaligus keluaran.
Contoh Sederhana :
Menampilkan “Hello World!”
DELIMITER $$
CREATE PROCEDURE hello()
BEGIN
SELECT "Hello World!";
END$$
DELIMITER ;
Keterangan :
DELIMITER = adalah untuk memberi tahu kepada
mysql soal delimiter yang digunakan, secara default
menggunakan ; jadi bila ada tanda ; mysql akan
mengartikan akhir dari statement, pada contoh di atas
delimeter yang digunakan $$ jadi akhir statementnya
adalah $$
Delimiter adalah karakter atau string yang memberi
tahu MySQL bahwa kita telah selesai menulis
statemen SQL. Ini diperlukan karena stored procedure
dapat terdiri atas sejumlah statement, dan setiap
statemen harus diakhiri dengan semicolon.
Contoh 1 Procedure :
Procedure untuk menghitung jumlah pasien :
DELIMITER $$
CREATE PROCEDURE jmlh_pasien()
BEGIN
SELECT COUNT(*) FROM pasien;
END$$
DELIMITER ;
Contoh 2 Procedure :
Procedure untuk menghitung jumlah item
barang yang pernah dibeli oleh satu pelanggan
DELIMITER $$
CREATE PROCEDURE jmlitembrg (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 ;
Contoh 3 Procedure
Procedure untuk menampilkan daftar pasien yang sudah
berobat.
DELIMITER $$
CREATE PROCEDURE pasien_berobat()
BEGIN
SELECT nomedrec,nama_pasien FROM pasien
WHERE nomedrec IN (SELECT nomedrec FROM
kwitansi);
END$$
DELIMITER ;
24/08/23
Contoh 4 Function
Function untuk menghitung jumlah produk yang
tersedia (stock) untuk satu produk tertentu.
DELIMITER $$
CREATE FUNCTION jmlstokbrg(produk VARCHAR(5))
RETURNS INT
BEGIN
DECLARE jumlah INT;
SELECT COUNT(*) INTO jumlah FROM produk
WHERE id_produk=produk;
RETURN jumlah;
END$$
DELIMITER ;
Cara memanggil : SELECT jmlstokbrg('B0004')
Sintaks Dasar SP Yang didukung Oleh
MySQL
Variabel : digunakan untuk menyimpan suatu
nilai secara sementara di memory
Seleksi Kondisi : If, If…Else, Case.
Perulangan : Loop, Repeat, While.
Contoh function hitungumur()
DELIMITER $$
CREATE FUNCTION hitungumur (lahir DATE)
RETURNS INT
BEGIN
DECLARE thn_sekarang, thn_lahir INT;
SET thn_sekarang = YEAR(NOW());
SET thn_lahir = YEAR (lahir);
RETURN thn_sekarang - thn_lahir;
END$$
DELIMITER ;
Cara memanggil : SELECT hitungumur('1980-02-01')
Seleksi Kondisi
IF kondisi THEN
perintah-jika-benar;
END IF;
IF kondisi THEN
perintah-jika-benar;
ELSE
perintah-jika-salah;
END IF;
CASE expression
WHEN value THEN
statements
[WHEN value THEN statements ...]
[ELSE statements]
END CASE;
contoh penggunaan perintah IF dalam fungsi
cekPelanggan() :
DELIMITER $$
CREATE FUNCTION cekPelanggan (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 ;
Cek : SELECT cekPelanggan('P0002')
Contoh penggunaan case dalam fungsi
getDiskon()
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 ;
Cara memanggil :SELECT getDiskon('80')
Referensi
http://www.ilmukomputer.org
http://www.achmatim.net
http://www.mysql.com
http://mysql.phi-integration.com
http://www.w3schools.com
Terima Kasih…