IF dan Case, Percabangan Dalam Stored Procedure MySQL – Percabangan adalah suatu pernyataan yang digunakan untuk mengambil keputusan terhadap satu atau lebih kemungkinan yang memenuhi syarat atau kondisi dalam bahasa pemrograman. Dalam expression di MySQL, dapat menggabungkan berupa variable, operator, fungsi, dll yang nantinya akan mengembalikan suatu nilai berupa TRUE, FALSE, bahkan bisa saja NULL. Dalam MySQL terdapat dua jenis percabangan, yaitu IF dan CASE.
Contents
Deklarasi IF
Dalam percabangan IF terdapat beberapa statement yang dapat digunakan, yaitu IF statement, IF-ELSE statement, dan IF-ELSEIF-ELSE statement.
IF statement
IF statement disini hanya memberikan satu kondisi saja dalam pengambilan keputusan yang berarti jika kondisi tersebut terpenuhi maka bernilai TRUE. Sebaliknya, jika kondisi tersebut tidak terpenuhi maka tidak akan mendapat nilai apapun.
/* Struktur dasar */ IF expression THEN statement; END IF; /* Contoh Penggunaan */ DELIMITER // CREATE PROCEDURE bilangan(IN input INT, OUT hasil VARCHAR(20)) BEGIN IF input > 10 THEN SET hasil = 'Angka lebih dari 10'; END IF; END // DELIMITER; CALL bilangan(25, @tampil); SELECT @tampil;
Penjelasan singkat dari stored procedure diatas adalah akan dilakukan pengecekan suatu kondisi dari inputan jika pada kondisi pertama inputan lebih dari 10 maka akan bernilai TRUE dan akan menampilkan keluaran “Angka lebih dari 10”. Namun, jika kondisi tersebut tidak memenuhi sama sekali maka akan bernilai FALSE dan pengecekan kondisi akan berhenti karena hanya ada satu kondisi saja.
IF-ELSE statement
Dalam IF-ELSE statement akan diberikan satu kondisi dalam pengambilan keputusan, jika kondisi tersebut terpenuhi maka bernilai TRUE. Namun, jika kondisi tersebut tidak terpenuhi maka akan masuk ke statement ELSE.
/* Struktur dasar */ IF expression THEN statement; ELSE statement; END IF; /* Contoh Penggunaan */ DELIMITER // CREATE OR REPLACE PROCEDURE bilangan(IN input INT, OUT hasil VARCHAR(20)) BEGIN IF input > 10 THEN SET hasil = 'Angka lebih dari 10'; ELSE SET hasil = 'Angka kurang dari 10'; END IF; END // DELIMITER; CALL bilangan(7, @tampil); SELECT @tampil;
Penjelasan singkat dari stored procedure diatas adalah akan dilakukan pengecekan suatu kondisi dari inputan jika pada kondisi pertama inputan user lebih dari 10 maka akan bernilai TRUE dan menampilkan keluaran “Angka lebih dari 10”. Namun, apabila kondisi tersebut tidak memenuhi maka akan masuk ke kondisi lain yaitu ke ELSE dan menampilkan keluaran “Angka kurang dari 10”. ELSE ini adalah suatu kondisi jika pendeklarasian kondisi pada IF tidak terpenuhi atau bernilai FALSE maka akan masuk ke kondisi ini.
IF-ELSEIF-ELSE statement
IF-ELSEIF-ELSE digunakan untuk memberikan beberapa kondisi dalam pengambilan keputusan.
DELIMITER // CREATE OR REPLACE PROCEDURE bilangan(IN input INT, OUT hasil VARCHAR(20)) BEGIN IF input > 10 THEN SET hasil = 'Angka lebih dari 10'; ELSEIF input = 10 SET hasil = 'Angka 10'; ELSE SET hasil = 'Angka kurang dari 10'; END IF; END // DELIMITER;
Penjelasan singkat dari stored procedure diatas adalah akan dilakukan pengecekan suatu kondisi dari inputan jika pada kondisi pertama inputan lebih dari 10 maka akan bernilai TRUE. Apabila pada pengecekan kondisi pertama FALSE maka akan lanjut ke pengecekan kondisi kedua yaitu jika inputan sama dengan 10 maka akan bernilai TRUE. Dan jika pada kondisi kedua FALSE maka akan masuk ke kondisi ELSE yaitu kedua kondisi diatas tidak memenuhi sama sekali.
Deklarasi Case
Dalam MySQL terdapat percabangan alternatif selain IF, yaitu percabangan CASE. Kelebihan dari percabangan CASE adalah penulisan kode lebih efisien dan lebih mudah untuk dibaca. Dalam percabangan CASE terdapat dua jenis atau bentuk percabangannya, yaitu simple case dan searched case.
Simple Case
Simple case adalah bentuk percabangan case sederhana yang dapat memeriksa serangkaian kondisi yang memiliki nilai unik.
/* Struktur dasar */ CASE case_expression WHEN when_expression THEN commands WHEN when_expression THEN commands WHEN when_expression THEN commands ... ELSE commands END CASE; /* Contoh Penggunaan */ DELIMITER // CREATE OR REPLACE PROCEDURE bilanganCase(IN input INT, OUT hasil VARCHAR(20)) BEGIN CASE input WHEN 10 THEN SET hasil = 'Angka 10'; WHEN 20 THEN SET hasil = 'Angka 20'; WHEN 30 THEN SET hasil = 'Angka 30'; ELSE SET hasil = 'Bukan angka 10, 20, atau 30'; END CASE; END // DELIMITER;
Penjelasan singkat dari stored procedure diatas adalah akan dilakukan pengecekan suatu kondisi dari inputan angka. Dimana kondisi pertama jika input tersebut bernilai 10 maka akan menampilkan keluaran ‘Angka 10’. Jika kondisi pertama tidak terpenuhi maka akan dilakukan kondisi yang kedua dan seterusnya sampai kondisi terpenuhi. Namun, jika ketiga kondisi tersebut tidak terpenuhi maka akan masuk ke kondisi ELSE.
Searched Case
Searched case dapat memungkinkan mencocokan nilai expression dengan sekumpulan nilai yang berbeda. Untuk mencari nilai expression yang lebih kompleks dapat menggunakan ini dan searched case ini setara dengan stuktur dasar IF akan tetapi strukturnya lebih mudah dibaca.
/* Struktur dasar */ CASE WHEN condition_1 THEN commands WHEN condition_2 THEN commands WHEN condition_3 THEN commands ... ELSE commands END CASE; /* Contoh Penggunaan */ DELIMITER // CREATE OR REPLACE PROCEDURE bilanganCase(IN input INT, OUT hasil VARCHAR(20)) BEGIN CASE WHEN input = 10 THEN SET hasil = 'Angka 10'; WHEN input = 20 THEN SET hasil = 'Angka 20'; WHEN input = 30 THEN SET hasil = 'Angka 30'; ELSE SET hasil = 'Bukan angka 10, 20, atau 30'; END CASE; END // DELIMITER;
Penjelasan dari stored procedure diatas sama seperti simple case, hanya saja penulisannya mirip seperti struktur IF namun lebih mudah dibaca dan dipahami.
Happy Coding ^-^