Oracle PL/SQL FOR LOOP dengan Contoh
⚡ Ringkasan Cerdas
Oracle Perulangan FOR PL/SQL menjalankan blok kode sejumlah kali yang diketahui antara batas bawah dan batas atas. Variabel perulangan dideklarasikan secara implisit dan bertambah sendiri, sehingga tidak diperlukan penghitung manual, dan kata kunci REVERSE memungkinkan perulangan untuk menghitung mundur.
Apa itu perulangan FOR?
Pernyataan “FOR LOOP” paling cocok digunakan ketika Anda ingin mengeksekusi kode sebanyak jumlah kali yang telah ditentukan, bukan berdasarkan kondisi lain.
Dalam perulangan ini, batas bawah dan batas atas ditentukan, dan selama variabel perulangan berada di antara rentang ini, perulangan akan dieksekusi.
Variabel loop bersifat self-incremental, sehingga tidak diperlukan operasi penambahan eksplisit. Variabel loop tidak perlu dideklarasikan, karena dideklarasikan secara implisit.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Penjelasan Sintaks:
- Kata kunci 'FOR' menandai awal perulangan dan 'END LOOP' menandai akhir perulangan.
- Variabel loop dievaluasi setiap kali sebelum bagian eksekusi dijalankan.
- Blok eksekusi berisi semua kode yang perlu dijalankan dan dapat berisi pernyataan apa pun yang dapat dieksekusi.
- Variabel `loop_variable` dideklarasikan secara implisit selama eksekusi loop, dan cakupannya hanya di dalam loop.
- Ketika variabel loop keluar dari rentang yang ditentukan, kontrol keluar dari loop.
- Perulangan dapat dibuat bekerja dalam urutan terbalik dengan menambahkan kata kunci 'REVERSE' sebelum lower_limit.
Contoh 1: Dalam contoh ini, kita mencetak angka dari 1 hingga 5 menggunakan pernyataan perulangan FOR.
BEGIN dbms_output.put_line('Program started.'); FOR a IN 1 .. 5 LOOP dbms_output.put_line(a); END LOOP; dbms_output.put_line('Program completed.'); END; /
Code Penjelasan:
- Code baris 2: Mencetak pernyataan “Program dimulai”.
- Code baris 3: Kata kunci 'FOR' menandai awal perulangan dan variabel perulangan 'a' dideklarasikan. Variabel ini sekarang mengambil nilai dari 1 hingga 5.
- Code baris 5: Mencetak nilai 'a'.
- Code baris 6: Kata kunci 'END LOOP' menandai akhir dari blok eksekusi.
- Baris 5 terus dieksekusi hingga 'a' mencapai nilai 6, di mana pada titik tersebut kondisi gagal dan kontrol keluar dari loop.
- Code baris 7: Mencetak pernyataan “Program selesai”.
Loop Bersarang
Pernyataan perulangan juga dapat bersarang. Perulangan luar dan dalam dapat memiliki tipe yang berbeda. Dalam perulangan bersarang, untuk setiap iterasi perulangan luar, perulangan dalam dieksekusi sepenuhnya.
LOOP --outer <execution block starts> LOOP --inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
Penjelasan Sintaks:
- Lingkaran terluar memiliki satu lingkaran lagi di dalamnya.
- Perulangan dapat berupa jenis apa pun, dan fungsi eksekusinya tetap sama.
Contoh 1: Dalam contoh ini, kita mencetak angka dari 1 hingga 3 menggunakan pernyataan perulangan FOR. Setiap angka dicetak sebanyak nilai angka tersebut.
DECLARE b NUMBER; BEGIN dbms_output.put_line('Program started'); FOR a IN 1..3 LOOP b:= 1; WHILE (a>=b) LOOP dbms_output.put_line(a); b:= b+1; END LOOP; END LOOP; dbms_output.put_line('Program completed'); END; /
Code Penjelasan:
- Code baris 2: Mendeklarasikan variabel 'b' sebagai tipe data 'NUMBER'.
- Code baris 4: Mencetak pernyataan “Program dimulai”.
- Code baris 5: Kata kunci 'FOR' menandai awal perulangan dan variabel perulangan 'a' dideklarasikan. Variabel ini sekarang mengambil nilai dari 1 hingga 3.
- Code baris 7: Menyetel ulang nilai 'b' menjadi '1' setiap kali.
- Code baris 8: Batin loop sementara memeriksa kondisi a>=b.
- Code baris 10: Mencetak nilai 'a' selama kondisi di atas terpenuhi.
- Code baris 14: Mencetak pernyataan “Program selesai”.
Perulangan FOR dan Perulangan REVERSE FOR
Secara default, perulangan FOR menghitung ke atas dari batas bawah ke batas atas. Menambahkan kata kunci REVERSE membuatnya menghitung ke bawah sambil tetap mempertahankanping Batasannya dalam urutan yang sama. Kedua bentuk tersebut ditampilkan bersama di bawah ini sehingga perbedaannya jelas.
| Bentuk | Header | Urutan nilai |
|---|---|---|
| Ascending | UNTUK a DALAM 1 .. 5 | 1, 2, 3, 4, 5 |
| Descending | UNTUK A DALAM BALASAN 1 .. 5 | 5, 4, 3, 2, 1 |
Perhatikan bahwa bahkan dengan REVERSE, batas bawah tetap ditulis sebelum batas atas; hanya arah iterasi yang berubah. Untuk loop yang jumlahnya tidak diketahui sebelumnya, loop dasar adalah pilihan yang lebih baik.





