Anda di halaman 1dari 18

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…

Anda mungkin juga menyukai