Aktivitas Praktikum
Pada bagian ini, mahasiswa akan mempraktikkan secara langsung penggunaan stored function dan stored procedure pada MySQL. Aktivitas disusun secara bertahap, mulai dari membuat function sederhana, membuat procedure, menggunakan parameter IN, OUT, dan INOUT, hingga menerapkan variabel, kendali kondisional, dan perulangan di dalam routine. Kerjakan setiap aktivitas secara berurutan agar fungsi dan perilaku stored routine dapat dipahami dengan baik.
Sebelum mulai praktik, pastikan database PRAK2 sudah tersedia dan tabel employee masih ada dari pertemuan-pertemuan sebelumnya.
Aktivitas 1 — Menyiapkan Data Praktikum
Percobaan 1.1 — Mengaktifkan database kerja
USE PRAK2;Gunakan perintah ini untuk memastikan seluruh percobaan dijalankan pada database yang benar.
Percobaan 1.2 — Menampilkan daftar tabel
SHOW TABLES;Perintah ini digunakan untuk memastikan tabel employee sudah tersedia.
Percobaan 1.3 — Menampilkan seluruh data pada tabel employee
SELECT * FROM employee;Perintah ini digunakan untuk melihat isi tabel employee yang akan digunakan sepanjang praktikum.
Aktivitas 2 — Membuat dan Menggunakan Function
Percobaan 2.1 — Mengganti delimiter
DELIMITER //Perintah ini digunakan agar body function yang terdiri dari beberapa bagian dapat ditulis dengan aman.
Percobaan 2.2 — Membuat function full_name
CREATE FUNCTION full_name(in_first_name VARCHAR(15), in_last_name VARCHAR(15))
RETURNS VARCHAR(35)
BEGIN
RETURN CONCAT(in_first_name, ' ', in_last_name);
END //Perintah ini digunakan untuk membuat function sederhana yang menggabungkan nama depan dan nama belakang.
Percobaan 2.3 — Mengembalikan delimiter
DELIMITER ;Percobaan 2.4 — Memanggil function full_name
SELECT full_name(first_name, last_name) FROM employee;Perintah ini digunakan untuk menampilkan hasil function pada setiap baris data employee.
Aktivitas 3 — Melihat dan Menghapus Function
Percobaan 3.1 — Menampilkan function yang telah dibuat
SHOW FUNCTION STATUS;Perintah ini digunakan untuk melihat daftar function yang tersedia di server.
Percobaan 3.2 — Menghapus function full_name
DROP FUNCTION full_name;Perintah ini digunakan untuk menghapus function yang sudah tidak diperlukan.
Percobaan 3.3 — Memeriksa kembali status function
SHOW FUNCTION STATUS;Perintah ini digunakan untuk memastikan function yang dihapus sudah tidak ada lagi.
Aktivitas 4 — Membuat dan Memanggil Procedure Sederhana
Percobaan 4.1 — Mengganti delimiter
DELIMITER //Percobaan 4.2 — Membuat procedure show_employees
CREATE PROCEDURE show_employees()
BEGIN
SELECT * FROM employee;
END //Perintah ini digunakan untuk membuat procedure sederhana yang menampilkan seluruh isi tabel employee.
Percobaan 4.3 — Mengembalikan delimiter
DELIMITER ;Percobaan 4.4 — Memanggil procedure show_employees
CALL show_employees();Perintah ini digunakan untuk menjalankan procedure yang telah dibuat.
Aktivitas 5 — Menggunakan Parameter IN
Percobaan 5.1 — Mengganti delimiter
DELIMITER $$Percobaan 5.2 — Membuat procedure getEmployeeByCity
CREATE PROCEDURE getEmployeeByCity(IN cityName VARCHAR(255))
BEGIN
SELECT * FROM employee WHERE city LIKE cityName;
END $$Perintah ini digunakan untuk membuat procedure dengan parameter masukan IN.
Percobaan 5.3 — Mengembalikan delimiter
DELIMITER ;Percobaan 5.4 — Memanggil procedure dengan parameter kota
CALL getEmployeeByCity('Vancouver');Perintah ini digunakan untuk menampilkan employee yang berada di kota Vancouver.
Aktivitas 6 — Menggunakan Parameter OUT
Percobaan 6.1 — Mengganti delimiter
DELIMITER :)Percobaan 6.2 — Membuat procedure getNumEmployee
CREATE PROCEDURE getNumEmployee(OUT numEmployee INT)
BEGIN
SELECT COUNT(*) INTO numEmployee FROM employee;
END :)Perintah ini digunakan untuk membuat procedure yang mengirimkan hasil keluar melalui parameter OUT.
Percobaan 6.3 — Mengembalikan delimiter
DELIMITER ;Percobaan 6.4 — Memanggil procedure dengan variabel session
CALL getNumEmployee(@num);Percobaan 6.5 — Menampilkan nilai parameter OUT
SELECT @num;Perintah ini digunakan untuk melihat hasil yang dikembalikan oleh procedure.
Aktivitas 7 — Menggunakan Parameter INOUT
Percobaan 7.1 — Mengganti delimiter
DELIMITER ^^Percobaan 7.2 — Membuat procedure increase
CREATE PROCEDURE increase(INOUT number INT)
BEGIN
SET number = number + 15;
END ^^Perintah ini digunakan untuk membuat procedure yang menerima dan sekaligus mengubah nilai input.
Percobaan 7.3 — Mengembalikan delimiter
DELIMITER ;Percobaan 7.4 — Menetapkan nilai awal variabel session
SET @num = 100;Percobaan 7.5 — Memanggil procedure increase
CALL increase(@num);Percobaan 7.6 — Menampilkan hasil akhir variabel session
SELECT @num;Perintah ini digunakan untuk membuktikan bahwa nilai input dan output berada pada variabel yang sama.
Aktivitas 8 — Melihat dan Menghapus Procedure
Percobaan 8.1 — Menampilkan procedure yang telah dibuat
SHOW PROCEDURE STATUS;Perintah ini digunakan untuk melihat daftar procedure yang tersedia di server.
Percobaan 8.2 — Menghapus procedure show_employees
DROP PROCEDURE show_employees;Perintah ini digunakan untuk menghapus procedure yang sudah tidak diperlukan.
Aktivitas 9 — Menggunakan Variabel Lokal di Function
Percobaan 9.1 — Mengganti delimiter
DELIMITER ^_^Percobaan 9.2 — Membuat function addTax
CREATE FUNCTION addTax(salary FLOAT(8,2))
RETURNS FLOAT(8,2)
BEGIN
DECLARE tax FLOAT DEFAULT 0.05;
RETURN salary * (1 - tax);
END ^_^Perintah ini digunakan untuk membuat function dengan variabel lokal bernama tax.
Percobaan 9.3 — Mengembalikan delimiter
DELIMITER ;Percobaan 9.4 — Memanggil function addTax
SELECT first_name, addTax(salary) FROM employee;Perintah ini digunakan untuk melihat hasil pengurangan salary berdasarkan variabel tax.
Aktivitas 10 — Mencoba Ruang Lingkup Variabel
Percobaan 10.1 — Mengganti delimiter
DELIMITER **Percobaan 10.2 — Membuat procedure checkScope
CREATE PROCEDURE checkScope()
BEGIN
DECLARE first_name VARCHAR(15) DEFAULT 'bob';
SELECT id, first_name FROM employee WHERE first_name = first_name;
END **Perintah ini digunakan untuk menunjukkan bahwa nama variabel lokal dapat menutupi nama kolom tabel jika menggunakan nama yang sama.
Percobaan 10.3 — Mengembalikan delimiter
DELIMITER ;Percobaan 10.4 — Memanggil procedure checkScope
CALL checkScope();Perintah ini digunakan untuk melihat bagaimana MySQL memperlakukan nama variabel lokal di dalam query.
Aktivitas 11 — Menggunakan Kendali IF
Percobaan 11.1 — Mengganti delimiter
DELIMITER &&Percobaan 11.2 — Membuat function hideSalary
CREATE FUNCTION hideSalary(salary FLOAT(8,2))
RETURNS VARCHAR(20)
BEGIN
DECLARE sal VARCHAR(20);
IF salary < 4000 THEN
SET sal = 'Low Salary';
ELSE
SET sal = 'High Salary';
END IF;
RETURN sal;
END &&Perintah ini digunakan untuk membuat function yang mengelompokkan salary menjadi dua kategori.
Percobaan 11.3 — Mengembalikan delimiter
DELIMITER ;Percobaan 11.4 — Memanggil function hideSalary
SELECT first_name, last_name, hideSalary(salary) FROM employee;Perintah ini digunakan untuk melihat hasil kategorisasi salary.
Aktivitas 12 — Menggunakan Kendali CASE
Percobaan 12.1 — Mengganti delimiter
DELIMITER ##Percobaan 12.2 — Membuat function calcTax
CREATE FUNCTION calcTax(job VARCHAR(20))
RETURNS FLOAT(3,2)
BEGIN
DECLARE tax FLOAT(3,2) DEFAULT 0.05;
CASE job
WHEN 'Manager' THEN SET tax = 0.10;
WHEN 'Programmer' THEN SET tax = 0.07;
WHEN 'Tester' THEN SET tax = 0.06;
ELSE SET tax = 0.05;
END CASE;
RETURN tax;
END ##Perintah ini digunakan untuk menentukan nilai tax berdasarkan jenis pekerjaan.
Percobaan 12.3 — Mengembalikan delimiter
DELIMITER ;Percobaan 12.4 — Memanggil function calcTax
SELECT first_name, last_name, calcTax(description) FROM employee;Percobaan 12.5 — Mengganti delimiter kembali
DELIMITER >>Percobaan 12.6 — Membuat function calcTax2
CREATE FUNCTION calcTax2(job VARCHAR(20))
RETURNS FLOAT(3,2)
BEGIN
DECLARE tax FLOAT(3,2);
CASE
WHEN job = 'Manager' THEN SET tax = 0.10;
WHEN job = 'Programmer' THEN SET tax = 0.07;
WHEN job = 'Tester' THEN SET tax = 0.06;
ELSE SET tax = 0.05;
END CASE;
RETURN tax;
END >>Percobaan 12.7 — Mengembalikan delimiter
DELIMITER ;Percobaan 12.8 — Memanggil function calcTax2
SELECT first_name, last_name, calcTax2(description) FROM employee;Perintah ini digunakan untuk menunjukkan bentuk kedua dari kendali CASE.
Aktivitas 13 — Menggunakan Perulangan WHILE
Percobaan 13.1 — Mengganti delimiter
DELIMITER //Percobaan 13.2 — Membuat procedure mod12
CREATE PROCEDURE mod12(IN number INT(10))
BEGIN
WHILE number MOD 12 > 0 DO
SET number = number + 1;
END WHILE;
SELECT number;
END //Perintah ini digunakan untuk membuat procedure yang menambah angka sampai habis dibagi 12.
Percobaan 13.3 — Mengembalikan delimiter
DELIMITER ;Percobaan 13.4 — Memanggil procedure mod12
CALL mod12(10);Percobaan 13.5 — Memanggil procedure mod12 dengan nilai lain
CALL mod12(24);Aktivitas 14 — Menggunakan Perulangan REPEAT … UNTIL
Percobaan 14.1 — Mengganti delimiter
DELIMITER /.Percobaan 14.2 — Membuat procedure repeatDemo
CREATE PROCEDURE repeatDemo(IN number INT(10))
BEGIN
REPEAT
SET number = number + 1;
UNTIL number MOD 12 = 0
END REPEAT;
SELECT number;
END /.Perintah ini digunakan untuk membuat procedure dengan perulangan REPEAT ... UNTIL.
Percobaan 14.3 — Mengembalikan delimiter
DELIMITER ;Percobaan 14.4 — Memanggil procedure repeatDemo
CALL repeatDemo(10);Aktivitas 15 — Menggunakan Perulangan LOOP
Percobaan 15.1 — Mengganti delimiter
DELIMITER /?Percobaan 15.2 — Membuat procedure iterateDemo
CREATE PROCEDURE iterateDemo(number INT)
BEGIN
label1: LOOP
SET number = number + 1;
IF number MOD 12 > 0 THEN
ITERATE label1;
END IF;
LEAVE label1;
END LOOP label1;
SELECT number;
END /?Perintah ini digunakan untuk membuat procedure dengan perulangan LOOP, ITERATE, dan LEAVE.
Percobaan 15.3 — Mengembalikan delimiter
DELIMITER ;Percobaan 15.4 — Memanggil procedure iterateDemo
CALL iterateDemo(10);Percobaan 15.5 — Memanggil procedure iterateDemo dengan nilai lain
CALL iterateDemo(20);Catatan Akhir Aktivitas
Seluruh percobaan pada halaman ini disusun mengikuti alur modul pertemuan 7, mulai dari pembuatan function, procedure, penggunaan parameter IN, OUT, dan INOUT, pemanfaatan variabel lokal, kendali IF dan CASE, hingga perulangan WHILE, REPEAT, dan LOOP. Dengan menyelesaikan seluruh aktivitas ini, mahasiswa diharapkan tidak hanya mampu membuat stored routine, tetapi juga memahami bagaimana logika pemrograman sederhana dapat dijalankan langsung di dalam database.