• Tidak ada hasil yang ditemukan

Kontrol Bersyarat

Dalam dokumen Kebutuhan Sistem & Pengenalan Software (Halaman 113-118)

Store Program MySQL

3.10 Kontrol Bersyarat

Dodit Suprianto: “Pemrograman Database Dengan MySQL Dan Visual Basic .NET/2005/2008”. 111

mysql> CALL BLOK_BERULANG4_SP();

+---+

| Akhir program | +---+

| Akhir program | +---+

1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Dodit Suprianto: “Pemrograman Database Dengan MySQL Dan Visual Basic .NET/2005/2008”. 112

3.10.1.1 Kombinasi IF-THEN

Pernyataan IF-THEN akan menjalankan perintah berikutnya jika kondisi ekspresi bernilai TRUE

IF ekspresi THEN

Perintah/pernyataan END IF;

Contoh IF-THEN sederhana yang menjalankan satu pernyataan:

IF harga_jual > 25000 THEN

CALL buku_discount(kode_buku, 10);

END IF;

Contoh pernyataan IF-THEN yang menjalankan lebih dari satu pernyataan jika IF bernilai benar:

IF harga_jual > 25000 THEN

CALL buku_discount(kode_buku, 10);

SELECT * FROM buku_tb WHERE kode_buku = '9789792075830';

END IF;

Contoh pernyataan IF-THEN berulang:

IF harga_jual > 25000 THEN

CALL buku_discount(kode_buku, 10);

IF harga_jual > 35000 THEN

CALL buku_discount(kode_buku, 5);

END IF;

END IF;

3.10.1.2 Pernyataan IF-THEN-ELSE

Penambahan kondisi ELSE pada pernyataan IF mengizinkan Anda untuk menentukan pernyataan baru jika eksekusi kondisi IF bernilai tidak TRUE (tidak TRUE tidak selalui bernilai FALSE, bisa jadi bernilai NULL).

Blok sintaks IF-THEN-ELSE adalah:

Dodit Suprianto: “Pemrograman Database Dengan MySQL Dan Visual Basic .NET/2005/2008”. 113

IF ekspresi THEN

Pernyataan dilaksanakan jika ekspresi bernilai TRUE ELSE

Pernyataan dilaksanakan jika ekspresi bernilai FALSE atau NULL END IF;

Contoh penggunaan IF-THEN-ELSE sederhana:

IF harga_jual < 25000 THEN

CALL buku_discount(kode_buku, 10);

ELSE

CALL buku_discount(kode_buku, 15);

END IF;

3.10.1.3 Pernyataan IF-THEN-ELSEIF-ELSE

Sintaks pernyataan IF yang lengkap mengizinkan Anda untuk menetapkan kondisi lebih dari satu. Kondisi pertama dijalankan jika hasil evaluasi bernilai TRUE. Jika tidak bernilai TRUE (False, Null), maka klausa ELSE (jika ada) akan dijalankan. Contoh blok IF-THEN-ELSEIF-ELSE adalah sebagai berikut (kondisi ELSEIF dapat ditambah sesuai kebutuhan):

IF ekspresi THEN

Pernyataan dilaksanakan jika ekspresi bernilai TRUE ELSEIF ekspresi1 THEN

Pernyataan dilaksanakan jika ekspresi1 bernilai TRUE ELSE

Pernyataan dilaksanakan jika seluruh ekspresi sebelumnya bernilai FALSE atau NULL

END IF;

Contoh blok IF-ELSEIF :

IF (harga_jual > 45000) THEN

CALL buku_discount(kode_buku, 10);

ELSEIF (harga_jual>45000 AND kode_buku='9789792075830') THEN CALL buku_discount(kode_buku, 15);

SELECT * FROM buku_tb WHERE kode_buku='9789792075830' END IF;

Contoh blok IF-ELSEIF dengan banyak kondisi:

IF (harga_jual > 45000) THEN

CALL buku_discount(kode_buku, 10);

Dodit Suprianto: “Pemrograman Database Dengan MySQL Dan Visual Basic .NET/2005/2008”. 114

ELSEIF (harga_jual > 45000 AND kode_buku='9789792075830') THEN CALL buku_discount(kode_buku, 15);

SELECT * FROM buku_tb WHERE kode_buku='9789792075830' ELSEIF (harga_jual > 45000 AND kode_buku='9789792405569') THEN

CALL buku_discount(kode_buku, 15);

SELECT * FROM buku_tb WHERE kode_buku='9789792405569' ELSEIF (harga_jual > 45000 AND kode_buku='9789793338125') THEN

CALL buku_discount(kode_buku, 15);

SELECT * FROM buku_tb WHERE kode_buku='9789793338125' END IF;

3.10.2 Pernyataan CASE

Pernyataan CASE merupakan alternatif dari pernyataan kondisi IF, namun CASE lebih mudah dibaca dan efesien ketika banyak kondisi membutuhkan evaluasi (pengecekkan) terutama ketika semua kondisi membandingkan suatu nilai yang berasal dari satu ekspresi.

3.10.2.1 Pernyataan CASE Sederhana

Pernyataan CASE mempunyai dua bentuk. Pertama, disebut sebagai pernyataan CASE sederhana yang membandingkan nilai ekspresi dengan banyak kondisi:

CASE ekspresi WHEN nilai THEN

pernyataan [WHEN nilai THEN

pernyataan ...]

[ELSE

pernyataan]

END CASE;

Contoh, kita akan melaksanan pernyataan INSERT jika ekspresi pilihan=

‘INSERT’, melaksanakan pernyataan UPDATE jika ekspresi pilihan=’UPDATE’ dan melaksanakan pernyataan DELETE jika ekspresi pilihan=’DELETE’.

CASE pilihan

WHEN 'INSERT' THEN

Dodit Suprianto: “Pemrograman Database Dengan MySQL Dan Visual Basic .NET/2005/2008”. 115

INSERT INTO penulis_tb (kode_penulis, nama_penulis, email, website, tentang_penulis)

VALUES (vkode_penulis, vnama_penulis, vemail, vwebsite, vtentang_penulis);

WHEN 'UPDATE' THEN UPDATE penulis_tb

SET nama_penulis=vnama_penulis, email=vemail, website=vwebsite, tentang_penulis=vtentang_penulis

WHERE kode_penulis = vkode_penulis;

WHEN 'DELETE' THEN

DELETE FROM penulis_tb

WHERE kode_penulis = vkode_penulis;

END CASE;

Sama dengan perintah IF Anda dapat menetapkan banyak pernyataan WHEN. Anda dapat menambahkan klausa ELSE yang akan dilaksanakan pernyataan-pernyataannya jika tidak ada satu ekspresi dan nilai kondisi yang memenuhi syarat.

Catatan: Pernyataan CASE akan menampilkan pesan kesalahan jika tak satu pun dari kondisi yang ada memenuhi syarat. Alangkah baiknya jika pernyataan ELSE dicantumkan saat kondisi tidak terpenuhi. Adapun pesan kesalahannya adalah: “ERROR 1339 (20000): Case not found for CASE statement

3.10.2.2 Pernyataan CASE Dengan Kondisi

Pernyataan CASE dengan kondisi secara fungsional serupa dengan blok IF- ELSEIF-ELSE-END IF. Sintaks CASE kondisi:

CASE

WHEN kondisi THEN pernyataan [WHEN kondisi THEN

pernyataan...]

[ELSE

pernyataan]

END CASE;

Contoh CASE dengan kondisi:

Dodit Suprianto: “Pemrograman Database Dengan MySQL Dan Visual Basic .NET/2005/2008”. 116

CASE

WHEN (harga_jual > 45000 AND kode_buku='9789792075830') THEN SELECT * FROM buku_tb WHERE kode_buku='9789792075830';

WHEN (harga_jual > 45000 AND kode_buku='9789792405569') THEN SELECT * FROM buku_tb WHERE kode_buku='9789792405569';

WHEN (harga_jual > 45000 AND kode_buku='9789793338125') THEN SELECT * FROM buku_tb WHERE kode_buku='9789793338125';

END CASE;

Untuk mencegah kesalahan ketika kondisi tidak terpenuhi maka tambahkan pernyataan ELSE seperti contoh berikut ini:

CASE

WHEN (harga_jual > 45000 AND kode_buku='9789792075830') THEN SELECT * FROM buku_tb WHERE kode_buku='9789792075830';

WHEN (harga_jual > 45000 AND kode_buku='9789792405569') THEN SELECT * FROM buku_tb WHERE kode_buku='9789792405569';

WHEN (harga_jual > 45000 AND kode_buku='9789793338125') THEN SELECT * FROM buku_tb WHERE kode_buku='9789793338125';

ELSE

SELECT 'Data tidak ditemukan';

END CASE;

Contoh penggunaan CASE berulang dengan lingkup blok penanganan kesalahan “error 1339” yang berarti tidak satupun kondisi terpenuhi.

BEGIN

DECLARE not_found INT DEFAULT 0;

DECLARE CONTINUE HANDLER FOR 1339 SET not_found=1;

CASE

WHEN (harga_jual > 45000 AND kode_buku='9789792075830') THEN SELECT * FROM buku_tb WHERE kode_buku='9789792075830';

WHEN (harga_jual > 45000 AND kode_buku='9789792405569') THEN SELECT * FROM buku_tb WHERE kode_buku='9789792405569';

WHEN (harga_jual > 45000 AND kode_buku='9789793338125') THEN SELECT * FROM buku_tb WHERE kode_buku='9789793338125';

END CASE;

END;

Dalam dokumen Kebutuhan Sistem & Pengenalan Software (Halaman 113-118)

Dokumen terkait