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.

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 ^-^