Skip to content

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.