• Tidak ada hasil yang ditemukan

Perihal Proses Perulangan

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

Store Program MySQL

3.11 Perihal Proses Perulangan

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;

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

 Banyak algoritma matematika yang dapat diterapkan melalui perulangan program.

 Program database terkadang membutuhkan perulangan untuk menelusuri baris/record yang dihasilkan dari pernyataan SELECT, kemudian melakukan manipulasi terhadapnya.

3.11.1 Pernyataan LOOP

Bentuk dari pernyataan LOOP adalah sebagai berikut:

[label:] LOOP pernyataan END LOOP [label];

Pernyataan-pernyataan yang berada diantara LOOP dan END LOOP akan diulang secara terus-menerus sampai LOOP dihentikan. Penghentian LOOP melalui pernyataan LEAVE.

Anda dapat memberi label (penamaan) loop pada bagian awal dan akhir blok. Label akan membantu Anda mengenali akhir dari pernyataan END LOOP yang berarti akhir dari suatu blok perulangan, selain itu label LOOP juga dapat digunakan untuk mengendalikan aliran eksekusi.

Contoh di bawah ini merupakan perulangan sederhana tapi berbahaya, karena perulangan akan dilakukan secara terus-menerus tidak pernah berhenti atau sampai Anda atur penghentiannya. Perulangan yang tidak pernah berhenti menyebabkan sumberdaya CPU terkuras dan komputer menjadi hang.

perluangan_tak_terhingga: LOOP

SELECT 'Pernyataan ini tak ada habisnya!!!';

END LOOP perluangan_tak_terhingga;

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

3.11.2 Pernyataan LEAVE

Pernyataan LEAVE bertujuan untuk menghentikan perulangan yang sedang aktif saat ini. Pernyataan LEAVE tampak seperti berikut:

LEAVE label;

Contoh ini akan menjalankan pernyataan LEAVE saat variable i bernilai 10:

SET i=1;

myloop: LOOP SET i=i+1;

IF i=10 then LEAVE myloop;

END IF;

END LOOP myloop;

SELECT 'Saya menghitung sampai 10';

3.11.3 Pernyataan ITERATE

Pernyataan ITERATE digunakan untuk mengulangi kembali eksekusi mulai dari awal perulangan, tanpa melakukan eksekusi pernyataan-pernyataan yang tersisa di dalam perulangan. Adapun sintaks ITERATE adalah sebagai berikut ini:

ITERATE label;

Ketika MySQL menjumpai pernyataan ITERATE, maka MySQL mengeksekusi kembali dari awal perulangan/loop yang telah ditunjuk.

Contoh berikut ini akan mencetak seluruh angka ganjil kurang dari 10.

ITERATE digunakan untuk mengulangi loop jika angka yang diperoleh bukan ganjil. LEAVE digunakan untuk menghentikan loop ketika variable i sudah mencapai angka lebih dari sama dengan 10.

SET i=0;

loop1: LOOP SET i=i+1;

IF i>=10 THEN

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

LEAVE loop1;

ELSEIF MOD(i,2)=0 THEN ITERATE loop1;

END IF;

SELECT CONCAT(i," adalah bilangan ganjil");

END LOOP loop1;

3.11.4 Perulangan REPEAT..UNTIL

Pernyataan REPEAT dan UNTIL digunakan untuk menciptakan perulangan secara berkelanjutan sampai suatu logika kondisi ditemukan. Sintaks REPEAT…UNTIL adalah seperti berikut ini:

[label:] REPEAT pernyataan

UNTIL ekspresi END REPEAT [label]

Perulangan dengan REPEAT akan terus dilakukan sampai ekspresi yang telah ditetapkan dalam klausa UNTIL bernilai TRUE (pengecekan dilakukan di akhir baris perulangan sehingga minimal satu kali proses eksekusi akan dilakukan). Intinya sama dengan logika blok LOOP-LEAVE-END LOOP, seperti berikut ini:

some_label:LOOP pernyataan

IF ekspresi THEN LEAVE some_label; END IF;

END LOOP;

Perulangan REPEAT sedikit lebih mudah untuk ditangani karena lebih jelas, mana kondisi-kondisi yang menyebabkan perulangan berhenti. Kalau pernyataan LEAVE bisa diletakkan dimana pun pada bagian loop sedang pernyataan UNTIL selalu dihubungkan dengan klausa END REPEAT pada posisi terakhir dari loop.

Kita tidak harus menyertakan label pada perulangan REPEAT, selama kondisi UNTIL tetap dicantumkan pada loop yang aktif saat ini.

Penggunaan label dalam perulangan REPEAT disarankan karena akan

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

mempermudah pembacaan kode program khususnya jika ada perulangan bersarang.

Berikut ini contoh REPEAT yang akan mencetak bilangan ganjil yang kurang dari 10. Bandingkan sintaksnya dengan contoh LOOP sebelumnya yang mengandung pernyataan LEAVE.

SET i=0;

loop1: REPEAT SET i=i+1;

IF MOD(i,2)<>0 THEN

Select concat(i," adalah bilangan ganjil");

END IF;

UNTIL i >= 10 END REPEAT;

Catatan penting mengenai perulangan REPEAT:

 Perulangan REPEAT pasti menjalankan setidaknya satu kali eksekusi sampai kondisi UNTIL untuk kali pertama dievaluasi.

 Penggunaan ITERATE dalam perulangan REPEAT bisa menghasilkan sesuatu yang tidak diharapkan sehingga tidak disarankan penggunaannya dalam perulangan REPEAT.

3.11.5 Perulangan WHILE

Perulangan WHILE melakukan eksekusi selama kondisi bernilai TRUE. Jika kondisi awal bukan TRUE maka perulangan tidak akan pernah dilaksanakan, tidak seperti perulangan REPEAT yang akan melaksanakan proses minimal satu kali. Penulisan perulangan WHILE seperti berikut ini:

[label:] WHILE ekspresi DO pernyataan

END WHILE [label]

Secara fungsional perulangan WHILE serupa dengan bentuk LOOP-LEAVE- END yang mengandung klausa LEAVE pada baris pertama pernyataan.

Pengecekkan berada diakhir

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

myloop: LOOP

IF ekspresi THEN LEAVE myloop; END IF;

Pernyataan lainnya;

END LOOP myloop;

Berikut ini contoh penggunaan WHILE yang menampilkan angka ganjil kurang dari 10:

SET i=1;

loop1: WHILE i<=10 DO IF MOD(i,2)<>0 THEN

SELECT CONCAT(i," adalah bilangan ganjil");

END IF;

SET i=i+1;

END WHILE loop1;

3.11.6 Perulangan Bersarang

Berikut ini contoh bagaimana membuat time table dengan cara perulangan di dalam perulangan lain atau sering disebut dengan perulangan bersarang.

DECLARE i,j INT DEFAULT 1;

loop_luar: LOOP SET j=1;

loop_dalam: LOOP

SELECT concat(i," times ", j," is ",i*j);

SET j=j+1;

IF j>12 THEN

LEAVE loop_dalam;

END IF;

END LOOP loop_dalam;

SET i=i+1;

IF i>12 THEN LEAVE loop_luar;

END IF;

END LOOP loop_luar;

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

Dokumen terkait