Oracle PL/SQL LOOP dengan Contoh

⚡ Ringkasan Cerdas

Perulangan PL/SQL mengeksekusi bagian kode secara berulang untuk jumlah waktu yang diinginkan. PL/SQL menawarkan perulangan dasar, FOR, dan WHILE, yang dikendalikan oleh CONTINUE, EXIT, EXIT WHEN, dan GOTO, dan perulangan dapat diberi label untuk mengelola struktur bersarang dengan rapi.

  • 🔁 Tujuan: Sebuah perulangan menjalankan blok kode berkali-kali, sehingga mengurangi ukuran dan kompleksitas kode.
  • 🧭 Penghitung Perulangan: Variabel penghitung menentukan kondisi perulangan dan harus berubah agar perulangan dapat berakhir.
  • MELANJUTKAN: Melewati sisa iterasi saat ini dan memulai iterasi berikutnya.
  • 🚪 KELUAR / KELUAR KETIKA: Keluar dari perulangan segera, secara opsional ketika kondisi Boolean bernilai benar.
  • Label: Label perulangan di antara tanda kurung siku ganda memungkinkan EXIT menargetkan perulangan luar.
  • Perulangan Dasar: Program akan berjalan hingga perintah EXIT eksplisit tercapai; tanpa perintah tersebut, program akan berulang tanpa henti.
  • 🧩 Tiga Jenis: Perulangan dasar, perulangan FOR, dan perulangan WHILE mencakup pola-pola umum.

Oracle Perulangan PL/SQL

Apa itu Loop?

Perulangan memungkinkan bagian kode tertentu dalam sebuah program dieksekusi sebanyak jumlah yang diinginkan. Dalam tutorial ini, kita akan membahas konsep perulangan dalam PL/SQL dan alur kendali dalam perulangan.

Pengantar Konsep Perulangan

Konsep perulangan memberikan keuntungan-keuntungan berikut dalam pemrograman:

  • Kemampuan penggunaan kembali kode.
  • Ukuran kode berkurang.
  • Alur kontrol yang mudah.
  • Kompleksitas yang berkurang.

Diagram di bawah ini menunjukkan toilet.ping konsep.

Looping Alur konsep dalam PL/SQL

Pada diagram di atas, kondisi perulangan diperiksa, dan selama kondisi tersebut terpenuhi, blok eksekusi akan berjalan.

Pada setiap iterasi, variabel penghitung loop yang menentukan kondisi loop harus berubah agar kontrol keluar dari loop. Dalam beberapa kasus, penghitung ini berupa penambahan atau pengurangan untuk jumlah yang telah ditentukan sebelumnya, dan dalam kasus lain berupa kondisi pencarian yang terus mengeksekusi blok hingga kondisi tersebut terpenuhi.

Pernyataan Kontrol Loop

Sebelum mempelajari konsep perulangan, penting untuk mempelajari pernyataan kontrol perulangan terlebih dahulu. Pernyataan-pernyataan ini mengontrol alur eksekusi di dalam perulangan.

LANJUTKAN

Kata kunci ini menginstruksikan mesin PL/SQL bahwa setiap kali menemukan CONTINUE di dalam sebuah loop, ia akan melewati sisa kode dalam blok eksekusi dan memulai iterasi berikutnya segera. Ini terutama digunakan ketika kode di dalam loop harus dilewati untuk nilai iterasi tertentu.

KELUAR / KELUAR KAPAN

Kata kunci ini menginstruksikan mesin PL/SQL untuk segera keluar dari loop saat ini. Dalam loop bersarang, EXIT di loop dalam hanya keluar dari loop dalam, bukan loop luar. 'EXIT WHEN' diikuti oleh ekspresi yang memberikan hasil Boolean; jika hasilnya TRUE, kontrol keluar.

GOTO

Pernyataan ini mengalihkan kendali ke pernyataan berlabel (“GOTO ;”). Pernyataan ini memiliki batasan sebagai 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 kode kontrol tracKemudahan akses menjadi sangat sulit ketika kendali dialihkan dari satu bagian ke bagian lain.

Jenis Loop di PL/SQL

PL / SQL menyediakan tiga jenis perulangan berikut:

Tabel di bawah ini membandingkan ketiganya sebelum loop dasar dibahas secara detail.

Lingkaran Kriteria keluar Paling baik digunakan saat
Perulangan dasar EXIT eksplisit di dalam blok Pintu keluar tidak didasarkan pada jumlah atau kondisi tetap.
UNTUK lingkaran Penghitung mencapai batas jangkauannya Jumlah iterasi diketahui sebelumnya.
loop WHILE Kondisi menjadi salah Perulangan harus berjalan selama suatu kondisi terpenuhi.

Pernyataan Loop Dasar

Ini adalah struktur perulangan paling sederhana dalam PL/SQL. Blok eksekusi dimulai dengan kata kunci 'LOOP' dan diakhiri dengan 'END LOOP'. Kondisi keluar harus diberikan di dalam blok eksekusi agar kontrol keluar dari perulangan, dan kata kunci EXIT harus diberikan secara eksplisit.

Struktur loop dasar dalam PL/SQL

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

Penjelasan Sintaks:

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

Catatan: Pernyataan perulangan dasar tanpa kata kunci EXIT adalah perulangan tak terbatas yang tidak pernah berhenti.

Contoh 1: Dalam contoh ini, kita mencetak angka dari 1 hingga 5 menggunakan pernyataan perulangan dasar.

Pencetakan angka 1 sampai 5 dalam format 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;
/

Code Penjelasan:

  • Code baris 2: Mendeklarasikan variabel 'a' sebagai 'NUMBER' dan menginisialisasinya dengan nilai '1'.
  • Code baris 4: Mencetak pernyataan “Program dimulai”.
  • Code baris 5: Kata kunci 'LOOP' menandai awal dari perulangan.
  • Code baris 6: Mencetak nilai 'a'.
  • Code baris 7: Meningkatkan nilai 'a' sebesar 1.
  • Code baris 8: Memeriksa apakah nilai 'a' lebih besar dari 5.
  • Code baris 9: Kata kunci 'END LOOP' menandai akhir dari blok eksekusi.
  • Baris 6 hingga 8 terus dieksekusi sampai 'a' mencapai 6, pada titik tersebut kondisi mengembalikan TRUE dan kontrol keluar dari loop.
  • Code baris 10: Mencetak pernyataan “Program selesai”.

Pelabelan Loop

Dalam PL/SQL, perulangan dapat diberi label. Label tersebut harus diapit di antara “<<” dan ">>”. Pemberian label pada perulangan, terutama pada perulangan bersarang, meningkatkan keterbacaan. Label dapat diberikan dalam perintah EXIT untuk keluar dari perulangan tertentu, sehingga kontrol dapat keluar dari perulangan terluar dari struktur bersarang secara langsung dengan memberikan perintah EXIT diikuti dengan label perulangan terluar.

Struktur loop bersarang berlabel

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

Penjelasan Sintaks:

  • Lingkaran terluar memiliki satu lingkaran lagi di dalamnya.
  • '< >' dan '< >' adalah label dari loop-loop ini.

Contoh 1: Dalam contoh ini, kita mencetak angka mulai dari 1 menggunakan pernyataan perulangan dasar. Setiap angka dicetak sebanyak nilainya. Batas atas deret ditentukan pada bagian deklarasi. Kita menggunakan konsep label untuk mencapai hal ini.

Contoh loop berlabel bagian 1Contoh loop berlabel bagian 2

DECLARE
a NUMBER:= 0;
b NUMBER;
upper_limit NUMBER := 4;
BEGIN
dbms_output.put_line('Program started.');
<<outer_loop>>
LOOP
a:= a+1;
b:= 1;
<<inner_loop>>
LOOP
EXIT outer_loop WHEN a > upper_limit;
dbms_output.put_line(a);
b:= b+1;
EXIT inner_loop WHEN b>a;
END LOOP;
END LOOP;
dbms_output.put_line('Program completed.');
END;
/

Code Penjelasan:

  • Code baris 2-3: Mendeklarasikan variabel 'a' dan 'b' sebagai tipe data 'NUMBER'.
  • Code baris 4: Mendeklarasikan variabel 'upper_limit' sebagai 'NUMBER' dengan nilai '4'.
  • Code baris 6: Mencetak pernyataan “Program dimulai”.
  • Code baris 7: Loop terluar diberi label “outer_loop”.
  • Code baris 9: Nilai 'a' bertambah 1.
  • Code baris 11: Loop bagian dalam diberi label “inner_loop”.
  • Code baris 13: Kondisi EXIT yang memeriksa apakah 'a' lebih tinggi dari nilai 'upper_limit'. Jika tidak, program berlanjut; jika ya, program langsung keluar dari loop luar.
  • Code baris 14: Mencetak nilai 'b'.
  • Code baris 15: Meningkatkan nilai 'b' sebesar 1.
  • Code baris 16: Kondisi EXIT yang memeriksa apakah 'b' lebih tinggi dari 'a'. Jika ya, maka keluar dari loop dalam.
  • Code baris 19: Mencetak pernyataan “Program selesai”.

Pertanyaan Umum Demo Slot

EXIT keluar dari loop tanpa syarat. EXIT WHEN hanya keluar dari loop ketika ekspresi Boolean berikutnya bernilai benar, yang menghilangkan kebutuhan akan IF terpisah di sekitar EXIT biasa.

Label memungkinkan perintah EXIT dalam loop dalam untuk meninggalkan loop luar bernama dalam satu langkah. Ini juga membuat kode bersarang jauh lebih mudah dibaca daripada... tracpernyataan king plain END LOOP.

Jika blok tidak memiliki EXIT, atau penghitung tidak pernah mencapai kondisi keluar, loop tidak akan pernah berhenti. Selalu pastikan penghitung berubah menuju kondisi EXIT WHEN.

Seringkali, ya. AI bisa. trace. apakah penghitung bergerak menuju kondisi EXIT dan memberi peringatan ketika sebuah loop tidak memiliki jalan keluar yang dapat dijangkau, meskipun jalan keluar yang bergantung pada data masih memerlukan uji coba untuk konfirmasi.

Perintah CONTINUE melewati sisa iterasi saat ini dan langsung menuju ke iterasi berikutnya. Perintah ini berguna ketika nilai-nilai tertentu harus diabaikan tanpa harus keluar dari loop sepenuhnya.

Ringkaslah postingan ini dengan: