MODUL VI
“BRANCING / LOOPING”
SISTEM MANAJEMEN BASIS DATA
1.2 Tujuan
- Mengerti tentang Stored Procedure
- Mampu Menggunakan Varibel, Brancing/Looping serta Percabangan pada
Stored Procedure
BAB II
DASAR TEORI
2
2.1 Variabel
Di deklarasi dengan keyword “DECLARE” kemudian di ikuti dengan
nama variabel dan tipe data.
Sintaks:
DECLARE nama variabel TYPE DEFAULT nilai;
Untuk DEFAULT sifatnya opsional
DELIMITER //
CREATE PROCEDURE dec1()
BEGIN
DECLARE COUNT INT DEFAULT0;
DECLARE x INT;
DECLARE message VARCHAR(100);
END;
DELIMITER ;
Contoh Cetak Nama :
DELIMITER |
BEGIN
DECLARE nama VARCHAR(50);
SET nama =CONCAT (gelardepan, " ",namadepan, " ", namabelakang, " ",
gelarbelakang);
SELECT nama AS hasil;
END;
DELIMITER ;
A. Percabangan
Penggunaan pernyataan-pernyataan pencabangan ataupun pengulangan di
dalam stored procedure merupakan tindakan yang legal. Dengan demikian,
kita bisa menghasilkan suatu prosedur yang kompleks. Perintah pemilihan ini
berupa statement-statement yang akan mengerjakan instruksi jika kondisi
benar/terpenuhi. Contoh berikut memperlihatkan penggunaan pernyataan IF
Sintak :
DELIMITER //
CREATE PROCEDURE cobaIF(
IN bil INT(3)
)
BEGIN
/*Deklarasi Variabel*/ DECLARE
str VARCHAR(50); if (bil<0) then
SET str ='Bilangan Negetif'; ELSE
SET str='Bilangan Posistif';
END if;
SELECT str;
END//
DELIMITER;
Atau
DELIMITER |
CREATE PROCEDURE exIF(
IN bil INT(3)
)
BEGIN
/*Deklarasi Variabel*/ DECLARE
str VARCHAR(50); if (bil<0) then
SET str ='Bilangan Negetif'; ELSE
SET str='Bilangan Posistif';
END if;
SELECT str;
END;
DELIMITER ;
Untuk memanggilnya :
call exIF(7);
B. Pengulangan
Perintah perulangan dengan menggunakan statement LOOP, WHILE,
dan REPEAT. Penggunaan statement LOOP diawali dengan menentukan
nama perulangan : LOOP dan diakhiri dengan END LOOP.
Sintak Loop :
Loop_name : LOOP
[statement1]
[statement2]
END LOOP loop_name
Sintak While :
Loop_Name : WHILE [condition] DO
[statement1]
[statement2]
END WHILE Loop_Name;
Sintak Repeat :
[begin_label:]
REPEAT
statement_list
UNTIL
search_condition
END REPEAT [end_label]
DELIMITER |
CREATE PROCEDURE ExLoop(
IN bil INT(3)
)
BEGIN
/*Deklarasi Variabel*/
DECLARE str VARCHAR(150);
DECLARE i int(3); Set
i=1;
Set str= ;
While i<= bil do
Set str=concat (str, i, , );
Set i=i+1;
END WHILE;
SELECT str;
END;
|
DELIMITER ;
BAB IV
IMPLEMENTASI
3
4
4.1 Soal
1. Buatlah Stored Procedure Variabel untuk menampilkan detail transaksi
dengan isi : Nama customer, nama produk, harga, tanggal transaksi
2. Insert kedalam tabel transaksi yang anda miliki. Procedure harus memiliki
sebuah kondisi yang harus dipenuhidan jika kondisi tidak terpebuhi, maka
akan tampil peringatan (contoh: insert ke tabel peminjaman buku,
jikaanggota masih mempunyai buku yang belum dikembalikan. Maka akan
menampilkan peringatan dan insert gagal).
3. Buatlah store procedure untuk menentukan diskon setiap minimum
pembelian. Jika membeli 2-3 barang mendapatkan diskon 10%, jika
membeli 4-5 barang mendapatkan diskon 15%, dan jika membeli 6-7
barang mendapatkan diskon 20%. (Setiap kondisi harus menampilkan teks.
Cth : Anda mendapatkan diskon 20%, kemudian menampilkan hasil
perhitungan diskonnya.)
4. Buatlah Stored procedure Looping untuk mencetak data 1 sampai dengan
15
4.2 Jawaban
1.
o Query
DELIMITER //
CREATE PROCEDURE hitung_hari(
IN nim VARCHAR(255),
IN kode_kelas VARCHAR(4),
OUT total_hari INT
)
BEGIN
SELECT DATEDIFF(CURRENT_DATE(), MAX(tanggal_diambil))
INTO total_hari
FROM krs
WHERE nim = nim && kode_kelas = kode_kelas;
END //
DELIMITER ;
CALL hitung_hari ("1234567890", "C02", @total_hari);
SELECT @total_hari AS Total_Hari;
o Hasil
o Penjelasan
Query diatas adalah procedure yang digunakan untuk mengetahui
selisih hari antara tanggal mahasiswa mengambil kelas dan tanggal saat
ini. Procedure menggunakan 2 parameter IN yaitu nim dan kode_kelas,
dan 1 parameter OUT yaitu total_hari, kemudian didalam isi procedure
tersebut melakukan eksekusi Query SELECT
DATEDIFF(CURRENT_DATE(), MAX(tanggal_diambil)) INTO
total_hari, ini berfungsi untuk menampilkan selisih hari dari tanggal
sekarang dan kolom tanggal_diambil, dan hasilnya akan dimasukan ke
dalam total_hari. Kemudian klausa where disini digunakan untuk
memfilter data berdasarkan nim dan juga kode_kelas. Selanjutnya
procedure yang sudah dibuat, akan dipanggil munggunakan call, dan untuk
menampilkan hasil total_hari menggunakan perintah SELECT @total_hari
AS Total_hari.
2.
o Query
DELIMITER //
CREATE PROCEDURE updateAlamatMhs(
IN nim VARCHAR(25),
IN alamat VARCHAR(100)
)
BEGIN
UPDATE mahasiswa m SET m.alamat = alamat WHERE m.nim =
nim;
END //
DELIMITER ;
o Hasil
o Penjelasan
Query diatas adalah procedure yang digunakan untuk mengupdate
alamat mahasiswa. Di procedure tersebut terdapat 2 parameter IN yaitu
nim dan alamat. Procedure yang sudah dibuat akan dipanggil
menggunakan call dengan memasukan 2 argumen yakni nim dan alamat.
Contohnya disini nim yang dimasukan 1234567890, dan perubahan
alamatnya adalah Sampang.
3.
o Query
DELIMITER //
CREATE PROCEDURE getMhsKrs()
BEGIN
SELECT m.nim, m.nama_mahasiswa, COUNT(*) AS Jumlah_Kelas
FROM
krs k INNER JOIN mahasiswa m ON k.nim = m.nim
GROUP BY nama_mahasiswa
ORDER BY m.nim;
END //
DELIMITER ;
CALL getMhsKrs();
o Hasil
4.
o Query
DELIMITER //
CREATE PROCEDURE tambah_krs(
IN nim VARCHAR(16),
IN kode_kelas VARCHAR(4),
IN tahun_ajaran YEAR(4)
)
BEGIN
DECLARE tanggal_sekarang DATE;
SET tanggal_sekarang = CURDATE();
5.
o Query
DELIMITER //
CREATE PROCEDURE getMhsByTgl()
BEGIN
SELECT * FROM mahasiswa WHERE tanggal_lahir BETWEEN
'2000-01-01' AND '2000-01-05';
END //
DELIMITER ;
CALL getMhsByTgl();
o Hasil
BAB V
PENUTUP
5
5.1 Analisa
Pada praktikum kali ini, praktikan dapat mengalisa bahwa dengan
mengetahui penggunaan Type Data dan Stored Procedure memungkinkan
pengguna bisa untuk menulis kode program yang lebih terstruktur dan
terorganisir. Dengan adayanya tipe data, kita bisa menentukan nilai apa yang
bisa disimpan didalam variabel tersebut. Ada lima jenis tipe data yaitu
character string, numeric, temporal, binary, dan boolean. Query Stored
Procedure dapat disimpan ke dalam database dan dapat dipanggil berulang kali,
sehingga pengguna dapat menghindari menulis Query yang sama berulang kali.
Untuk membuat prosedur kita perlu menuliskan Create Procedure kemudian
diikuti nama prosedur yang ingin kita buat Penggunaan Stored Procedure pada
database memiliki manfaat yang signifikan, antara lain meningkatkan efisiensi
dan kecepatan operasi, meminimalkan jumlah data yang ditransfer antara
database dan aplikasi, keterstrukturan kode, keamanan data, kemudahan
pemeliharaan, dan portabilitas kode program.
5.2 Kesimpulan
1. Tipe data merupakan bagian dari variabel yang mempengaruhi perilaku
variabel
2. Dalam Type Data Atribut seperti nama dan alamat direpresentasikan
oleh character string
3. Type Data Temporal merupakan tipe data yang menyimpan tanggal dan
waktu yang disesuikan dengan system-timezone (komputer)
4. Stored Procedure adalah sekumpulan Kode yang tersimpan di dalam
database dan dapat dieksekusi berulang-ulang tanpa perlu menulis ulang
kode program.
5. Stored Procedure memungkinkan pengguna untuk mengakses data dalam
database dan menjalankan operasi tertentu dengan lebih efisien dan
terstruktur.