Oracle PL/SQL LOOP dengan Contoh

Apa itu Loop?

Loops memungkinkan bagian tertentu dari kode dalam suatu program untuk dieksekusi sebanyak yang diinginkan.

Dalam tutorial ini, kita akan melihat konsep loop dalam PL/SQL dan aliran kontrol dalam loop.

Pengantar Konsep Loops

Konsep loop memberikan keuntungan berikut dalam pengkodean.

  • Kode dapat digunakan kembali
  • Mengurangi ukuran kode
  • Aliran kontrol yang mudah
  • Mengurangi Kompleksitas

Diagram di bawah ini menunjukkan konsep perulangan secara bergambar

Oracle PL/SQL LOOP

Pada diagram di atas, kondisi loop akan diperiksa, dan selama kondisi loop terpenuhi, blok eksekusi akan dieksekusi.

Dalam setiap iterasi, variabel penghitung loop yang benar-benar menentukan kondisi loop harus diubah agar kontrol keluar dari loop. Dalam beberapa kasus, variabel penghitung loop ini adalah operator kenaikan/penurunan untuk jumlah yang telah ditentukan, dan dalam beberapa kasus, ini adalah kondisi pencarian yang terus mengeksekusi blok hingga memenuhinya.

Pernyataan Kontrol Loop

Sebelum mempelajari konsep perulangan, wajib mempelajari pernyataan kontrol perulangan. Pernyataan kontrol loop adalah pernyataan yang benar-benar mengontrol aliran eksekusi di dalam loop. Di bawah ini adalah penjelasan rinci tentang pernyataan kontrol loop.

LANJUTKAN

Kata kunci ini mengirimkan instruksi ke mesin PL/SQL bahwa setiap kali mesin PL/SQL menemukan kata kunci ini di dalam loop, maka kode yang tersisa di blok eksekusi kode akan dilewati, dan iterasi berikutnya akan segera dimulai. Ini terutama akan digunakan jika kode di dalam loop ingin dilewati untuk nilai iterasi tertentu.

KELUAR / KELUAR KAPAN

Kata kunci ini mengirimkan instruksi ke mesin PL/SQL bahwa setiap kali mesin PL/SQL menemukan kata kunci ini, maka mesin tersebut akan segera keluar dari loop saat ini. Jika mesin PL/SQL menemui EXIT pada nested loop, maka akan keluar dari loop yang sudah didefinisikan, yaitu pada nested loop, memberikan EXIT pada inner loop hanya akan keluar kontrol dari inner loop tetapi bukan dari loop luar. 'EXIT WHEN' diikuti dengan ekspresi yang memberikan hasil Boolean. Jika hasilnya TRUE maka kontrol akan EXIT.

GOTO

Pernyataan ini akan mentransfer kontrol ke pernyataan berlabel (“GOTO ;”). Ini memiliki batasan berikut

  • Pengalihan kendali hanya dapat dilakukan dalam subprogram.
  • Pengalihan kendali tidak dapat dilakukan dari bagian penanganan pengecualian ke bagian eksekusi

Penggunaan pernyataan ini tidak disarankan kecuali tidak ada alternatif lain, karena keterlacakan kontrol kode akan sangat sulit dalam program karena adanya pengalihan kendali dari satu bagian ke bagian lain.

Jenis Loop di PL/SQL

PL / SQL menyediakan tiga jenis loop berikut

Pernyataan Loop Dasar

Pernyataan loop ini adalah struktur loop paling sederhana di PL/SQL. Blok eksekusi dimulai dengan kata kunci 'LOOP' dan diakhiri dengan kata kunci 'END LOOP'.

Kondisi keluar harus diberikan di dalam blok eksekusi ini sehingga kontrol keluar dari perulangan.

Perlu kata kunci EXIT untuk diberikan secara eksplisit di bagian eksekusi untuk keluar dari loop.

Pernyataan Loop Dasar

 LOOP
<execution block starts>
<EXIT condition based on developer criteria> 
<execution_block_ends>
END LOOP;

Penjelasan Sintaks:

  • Dalam sintaks di atas, kata kunci 'LOOP' menandai awal perulangan dan 'END LOOP' menandai akhir perulangan.
  • Blok eksekusi berisi semua kode yang perlu dieksekusi termasuk kondisi EXIT.
  • Bagian eksekusi dapat berisi pernyataan eksekusi apa pun.

Catatan: Pernyataan loop dasar tanpa kata kunci EXIT akan menjadi INFINITE-LOOP yang tidak akan pernah berhenti.

Contoh 1: Dalam contoh ini, kita akan mencetak angka dari 1 hingga 5 menggunakan pernyataan loop dasar. Untuk itu, kita akan menjalankan kode berikut.

Pernyataan Loop Dasar

DECLARE 
a NUMBER:=1; 
BEGIN
dbms_output.put_line('Program started.');
LOOP
dbms_output.put_line(a);
a:=a+1;
EXIT WHEN a>5;
END LOOP;
dbms_output.put_line('Program completed');
END:
/

Penjelasan Kode:

  • Baris kode 2: Mendeklarasikan variabel 'a' sebagai tipe data 'NUMBER' dan menginisialisasinya dengan nilai '1'.
  • Baris kode 4: Mencetak pernyataan “Program dimulai”.
  • Baris kode 5: Kata kunci 'LOOP' menandai awal perulangan.
  • Baris kode 6: Mencetak nilai 'a'.
  • Baris kode 7: Menambah nilai 'a' sebanyak +1.
  • Baris kode 8: Memeriksa apakah nilai 'a' lebih besar dari 5.
  • Baris kode 9: Kata kunci 'END LOOP' menandai akhir dari blok eksekusi.
  • Kode dari baris 6 ke baris 8 akan terus dieksekusi hingga 'a' mencapai nilai 6, karena kondisi akan mengembalikan TRUE, dan kontrol akan EXIT dari loop.
  • Baris kode 10: Mencetak pernyataan “Program selesai”

Pelabelan Loop

Dalam PL/SQL, loop dapat diberi label. Label harus diapit di antara “<<” dan “>>”. Pelabelan loop khususnya dalam kode loop bersarang akan memberikan lebih banyak keterbacaan. Label dapat diberikan dalam perintah EXIT untuk keluar dari loop tertentu. Dengan menggunakan label, kontrol dapat dibuat untuk langsung keluar dari loop luar dari loop bersarang dari mana saja di dalam loop, dengan memberikan perintah keluar diikuti dengan label loop luar.

Pelabelan Loop

<<OUTER_LOOP>>
LOOP 
	<execution_block_starts>
	.
	<<INNER_LOOP>>
	LOOP --inner
		<execution_part>
	END LOOP;
	.
	<executi_block_ends>
END LOOP;

Penjelasan Sintaks:

  • Dalam sintaks di atas, loop keluar memiliki satu loop lagi di dalamnya.
  • '< >' dan '< >' adalah label dari loop ini.

Contoh 1: Dalam contoh ini, kita akan mencetak angka mulai dari 1 menggunakan pernyataan Basic loop. Setiap angka akan dicetak sebanyak nilainya. Batas atas seri ditetapkan pada bagian deklarasi program. Mari kita pelajari cara menggunakan konsep label untuk mencapai hal ini. Untuk itu, kita akan menjalankan kode berikut

Pelabelan LoopPelabelan Loop

DECLARE
a NUMBER:=0;
b NUMBER;
upper-limit NUMBER :=4;
BEGIN
dbms_output.put_line(‘Program started.' ); 
«outerloop»‭	‬
LOOP 
a:=a+1;
b:=l;
«inner loop»
LOOP
EXIT outer_loop WHEN a > upper_limit;
dbms_output.put_line(a);
b:=b+l;
EXIT inner_loop WHEN b>a;
END LOOP;
END LOOP;
dbms_output.put_line('Program completed.');
END;
/

Penjelasan Kode:

  • Baris kode 2-3: Mendeklarasikan variabel 'a' dan 'b' sebagai tipe data 'NUMBER'.
  • Baris kode 4: Mendeklarasikan variabel 'upper_limit' sebagai tipe data 'NUMBER' dengan nilai '4'
  • Baris kode 6: Mencetak pernyataan “Program dimulai”.
  • Baris kode 7: Loop luar telah diberi label sebagai “outer_loop”
  • Baris kode 9: Nilai 'a' bertambah 1.
  • Baris kode 11: Loop dalam telah diberi label sebagai “inner_loop”.
  • Baris kode 13: Kondisi EXIT yang memeriksa apakah nilai 'a' lebih tinggi dari nilai 'upper_limit'. Jika tidak maka ia akan melangkah lebih jauh, jika tidak maka ia akan langsung keluar dari loop luar.
  • Baris kode 14: Mencetak nilai 'b'.
  • Baris kode 15: Menambah nilai 'b' sebesar +1.
  • Baris kode 16: Kondisi EXIT yang memeriksa apakah nilai 'b' lebih tinggi dari 'a'. Jika demikian, maka kontrol akan keluar dari loop dalam.
  • Baris kode 14: Mencetak pernyataan “Program selesai”

Ringkasan

Lingkaran Lingkaran Dasar
Kriteria KELUAR Keluar ketika menemukan kata kunci 'EXIT' di bagian eksekusi
penggunaan Baik digunakan ketika jalan keluar tidak didasarkan pada kondisi tertentu.

Ringkaslah postingan ini dengan: