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.
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.
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:
- Pernyataan loop dasar
- Untuk pernyataan loop
- Pernyataan perulangan while
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.
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.
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.
<<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.
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”.







