Oracle Pernyataan PL/SQL IF THEN ELSE: ELSIF, NESTED-IF
⚡ Ringkasan Cerdas
Pernyataan Pengambilan Keputusan PL/SQL mengontrol kode mana yang akan dijalankan berdasarkan kondisi Boolean. Oracle menyediakan IF-THEN, IF-THEN-ELSE, IF-THEN-ELSIF, dan NESTED-IF, sehingga program dapat melewati sebuah blok, memilih di antara dua jalur, atau memilih satu alternatif dari banyak pilihan.

Apa itu Pernyataan Pengambilan Keputusan?
Pernyataan pengambilan keputusan menentukan pengendalian aliran SQL Pernyataan-pernyataan ini didasarkan pada kondisi. Pernyataan ini memberi programmer kendali yang lebih baik untuk mencegah blok kode tertentu dieksekusi, atau memilih blok kode yang diinginkan berdasarkan suatu kondisi. Berikut adalah representasi bergambar dari pernyataan pengambilan keputusan.

Jenis-jenis pernyataan pengambilan keputusan: Oracle menyediakan tipe-tipe berikut.
- JIKA KEMUDIAN
- JIKA-MAKA-LAIN
- JIKA-MAKA-ELSIF
- BERSARANG-JIKA
- KASUS
- KASUS YANG DICARI
Tutorial ini membahas varian IF. Bentuk CASE dan CASE yang dicari dibahas di bagian selanjutnya. Pernyataan CASE PL/SQL panduan.
Pernyataan JIKA-MAKA
Pernyataan IF-THEN digunakan untuk mengeksekusi bagian kode tertentu hanya ketika suatu kondisi terpenuhi. Kondisi tersebut harus menghasilkan Boolean Nilai (Benar/Salah). Ini adalah pernyataan kondisional dasar yang memungkinkan Oracle Menjalankan atau melewati sebagian kode berdasarkan kondisi yang telah ditentukan.
Sintaks untuk Pernyataan IF-THEN:
IF <condition: returns Boolean> THEN -executed only if the condition returns TRUE <action_block> END IF;
- Dalam sintaks di atas, kata kunci 'IF' diikuti oleh kondisi yang bernilai 'TRUE' atau 'FALSE'.
- Kontrol tersebut menjalankan hanya jika kondisi tersebut terpenuhi .
- Jika kondisi tersebut dievaluasi menjadi SQL melewatkan dan mulai mengeksekusi kode setelah blok 'END IF'.
Catatan: Setiap kali suatu kondisi bernilai 'NULL', SQL memperlakukan 'NULL' sebagai 'FALSE'.
Contoh 1: Dalam contoh ini, kita mencetak pesan ketika angkanya lebih besar dari 100.
DECLARE a NUMBER := 10; BEGIN dbms_output.put_line('Program started.'); IF( a > 100 ) THEN dbms_output.put_line('a is greater than 100'); END IF; dbms_output.put_line('Program completed.'); END; /
Code Penjelasan:
- Code baris 2: Mendeklarasikan variabel 'a' sebagai tipe data 'NUMBER' dan menginisialisasinya dengan nilai '10'.
- Code baris 4: Mencetak pernyataan “Program dimulai”.
- Code baris 5: Memeriksa kondisi, apakah variabel 'a' lebih besar dari '100'.
- Code Baris 6: Jika 'a' lebih besar dari '100', maka "a lebih besar dari 100" akan dicetak. Jika 'a' kurang dari atau sama dengan 100, kondisi tersebut gagal dan pernyataan pencetakan diabaikan.
- Code baris 8: Mencetak pernyataan “Program selesai”.
Code Keluaran:
Program started. Program completed.
Contoh 2: Dalam contoh ini, kita mencetak pesan jika huruf yang diberikan adalah huruf vokal bahasa Inggris (A, E, I, O, U).
DECLARE a CHAR(1) := 'u'; BEGIN IF UPPER(a) in ('A','E','I','O','U' ) THEN dbms_output.put_line('The character is in English Vowels'); END IF; END; /
Code Penjelasan:
- Code baris 2: Mendeklarasikan variabel 'a' sebagai 'CHAR' dengan ukuran '1' dan menginisialisasinya dengan nilai 'u'.
- Code baris 4: Memeriksa apakah variabel 'a' ada dalam daftar ('A','E','I','O','U'). Nilai 'a' diubah menjadi huruf besar sebelum dibandingkan, agar perbandingan tidak peka terhadap huruf besar/kecil.
- Code baris 5: Jika 'a' ada dalam daftar, maka akan dicetak "Karakter tersebut adalah Vokal Bahasa Inggris". Jika kondisinya gagal, program ini tidak memberikan output apa pun, karena tidak ada pernyataan pencetakan di luar blok IF-THEN.
Code Keluaran:
The character is in English Vowels
Pernyataan IF-THEN-ELSE
Pernyataan IF-THEN-ELSE digunakan untuk memilih di antara dua alternatif berdasarkan suatu kondisi. Berikut sintaksnya.
Sintaks Pernyataan IF-THEN-ELSE:
IF <condition: returns Boolean> THEN -executed only if the condition returns TRUE <action_block1> ELSE -execute if the condition failed (returns FALSE) <action_block2> END IF;
- Kata kunci 'IF' diikuti oleh suatu kondisi yang menghasilkan nilai 'TRUE' atau 'FALSE'.
- Kontrol dijalankan hanya jika kondisi tersebut terpenuhi .
- Jika kondisi tersebut dievaluasi menjadi , SQL dieksekusi .
- Bagaimanapun, salah satu dari dua blok aksi akan dieksekusi.
Catatan: Setiap kali suatu kondisi bernilai 'NULL', SQL memperlakukan 'NULL' sebagai 'FALSE'.
Contoh 1: Dalam contoh ini, kita mencetak apakah angka yang diberikan adalah ganjil atau genap.
DECLARE a NUMBER:= 11; BEGIN dbms_output.put_line ('Program started'); IF( mod(a,2)=0) THEN dbms_output.put_line('a is even number'); ELSE dbms_output.put_line('a is odd number'); END IF; dbms_output.put_line ('Program completed.'); END; /
Code Penjelasan:
- Code baris 2: Mendeklarasikan variabel 'a' sebagai tipe data 'NUMBER' dan menginisialisasinya dengan nilai '11'.
- Code baris 4: Mencetak pernyataan “Program dimulai”.
- Code baris 5: Memeriksa apakah modulus variabel 'a' oleh '2' adalah 0.
- Code baris 6: Jika '0', maka “a adalah bilangan genap” akan dicetak.
- Code baris 7: Jika nilai modulus tidak sama dengan '0', kondisi akan mengembalikan , sehingga “a adalah angka ganjil” dicetak.
- Code baris 10: Mencetak pernyataan “Program selesai”.
Code Keluaran:
Program started. a is odd number Program completed.
Pernyataan IF-THEN-ELSIF
- Pernyataan IF-THEN-ELSIF digunakan ketika satu alternatif harus dipilih dari sekumpulan alternatif, di mana setiap alternatif memiliki kondisinya sendiri.
- Kondisi pertama yang dikembalikan dieksekusi, dan kondisi yang tersisa dilewati.
- Pernyataan IF-THEN-ELSIF dapat berisi blok 'ELSE', yang akan dieksekusi jika tidak ada satu pun kondisi yang terpenuhi.
Catatan: Blok ELSE bersifat opsional. Jika tidak ada blok ELSE dan tidak ada kondisi yang terpenuhi, controller akan melewati semua blok aksi dan mengeksekusi kode yang tersisa.
Sintaks Pernyataan IF-THEN-ELSIF:
IF <condition1: returns Boolean> THEN -executed only if the condition returns TRUE <action_block1> ELSIF <condition2: returns Boolean> THEN <action_block2> ELSIF <condition3: returns Boolean> THEN <action_block3> ELSE --optional <action_block_else> END IF;
- Kontrol dijalankan hanya jika kondisi1 kembali .
- Jika kondisi 1 tidak terpenuhi, pengontrol akan memeriksa kondisi 2, dan seterusnya.
- Pengontrol keluar dari pernyataan IF ketika menemukan kondisi yang mengembalikan nilai tertentu. dan menjalankan blok aksi yang sesuai, atau jika tidak ada yang terpenuhi, maka blok ELSE (jika ada) akan dijalankan.
Catatan: Setiap kali suatu kondisi bernilai 'NULL', SQL memperlakukan 'NULL' sebagai 'FALSE'.
Contoh 1: Tanpa blok ELSE. Dalam contoh ini, kita mencetak nilai berdasarkan nilai yang diberikan tanpa kondisi else (nilai >= 70 Nilai A, nilai >= 40 dan nilai < 70 Nilai B, nilai >= 35 dan nilai < 40 Nilai C).
DECLARE mark NUMBER := 55; BEGIN dbms_output.put_line('Program started.'); IF( mark >= 70) THEN dbms_output.put_line('Grade A'); ELSIF(mark >= 40 AND mark < 70) THEN dbms_output.put_line('Grade B'); ELSIF(mark >= 35 AND mark < 40) THEN dbms_output.put_line('Grade C'); END IF; dbms_output.put_line('Program completed.'); END; /
Code Penjelasan:
- Code baris 2: Mendeklarasikan variabel 'mark' sebagai tipe data 'NUMBER' dan menginisialisasinya dengan nilai '55'.
- Code baris 4: Mencetak pernyataan “Program dimulai”.
- Code baris 5: Memeriksa kondisi 1, apakah 'mark' lebih besar dari atau sama dengan 70.
- Code baris 7: Karena kondisi1 gagal, kondisi2 '70 > mark >= 40' diperiksa.
- Code baris 8: Kondisi2 kembali , sehingga pesan 'Nilai B' tercetak.
- Code Baris 12: Mencetak pernyataan “Program selesai”. Kondisi 3 'mark < 35' dilewati, karena kondisi TRUE sudah ditemukan.
Code Keluaran:
Program started. Grade B Program completed.
Contoh 2: Dengan blok ELSE. Dalam contoh ini, kita mencetak nilai berdasarkan nilai yang diberikan dengan kondisi else (nilai >= 70 Nilai A, nilai >= 40 dan nilai < 70 Nilai B, nilai >= 35 dan nilai < 40 Nilai C, jika tidak 'Tidak Ada Nilai').
DECLARE mark NUMBER := 25; BEGIN dbms_output.put_line('Program started.'); IF( mark >= 70) THEN dbms_output.put_line('Grade A'); ELSIF(mark >= 40 AND mark < 70) THEN dbms_output.put_line('Grade B'); ELSIF(mark >= 35 AND mark < 40) THEN dbms_output.put_line('Grade C'); ELSE dbms_output.put_line('No Grade'); END IF; dbms_output.put_line('Program completed.'); END; /
Code Penjelasan:
- Code baris 2: Mendeklarasikan variabel 'mark' sebagai tipe data 'NUMBER' dan menginisialisasinya dengan nilai '25'.
- Code baris 4: Mencetak pernyataan “Program dimulai”.
- Code baris 5: Memeriksa kondisi 1, apakah 'mark' lebih besar dari atau sama dengan 70.
- Code baris 7: Karena kondisi1 gagal, kondisi2 '70 > mark >= 40' diperiksa.
- Code baris 9: Karena kondisi2 gagal, kondisi3 '40 > mark >= 35' diperiksa.
- Code baris 11: Karena semua kondisi gagal, kontrol memeriksa blok ELSE dan mencetak 'Tidak Ada Nilai'.
- Code baris 14: Mencetak pernyataan “Program selesai”.
Code Keluaran:
Program started. No Grade Program completed.
Pernyataan NESTED-IF
- Pernyataan NESTED-IF memungkinkan programmer untuk menempatkan satu atau lebih kondisi 'IF' di dalam kondisi 'IF' lainnya. .
- Setiap kondisi 'IF' harus memiliki pernyataan 'END IF' terpisah, yang menandai akhir cakupan dari kondisi tersebut. .
- Pernyataan 'IF' menganggap 'END IF' terdekat sebagai titik akhir untuk kondisi tersebut.
- Representasi bergambar untuk NESTED-IF ditunjukkan di bawah ini.
IF <condition1: returns Boolean> THEN --executed only if the condition returns TRUE <action block1 starts> IF <condition2: returns Boolean> THEN <action_block2> END IF; --END IF corresponds to condition2 <action_block1 ends> END IF; --END IF corresponds to condition1
Penjelasan Sintaks:
- IF terluar berisi satu pernyataan IF lagi di dalam blok aksinya.
- Jika kondisi1 kembali , kontrol dieksekusi dan memeriksa kondisi2.
- Jika kondisi2 juga mengembalikan , Kemudian juga dieksekusi.
- Jika kondisi2 dievaluasi menjadi , SQL dilewati .
Contoh Pernyataan IF Bersarang: Angka terbesar dari tiga angka. Dalam contoh ini, kita mencetak angka terbesar dari tiga angka menggunakan pernyataan if bersarang. Angka-angka tersebut ditetapkan pada bagian deklarasi (Number = 10, 15, dan 20), dan nilai maksimumnya diambil menggunakan pernyataan if bersarang.
DECLARE a NUMBER := 10; b NUMBER := 15; c NUMBER := 20; BEGIN dbms_output.put_line('Program started.'); IF( a > b)THEN /*Nested-if 1 */ dbms_output.put_line('Checking Nested-IF 1'); IF( a > c ) THEN dbms_output.put_line('A is greatest'); ELSE dbms_output.put_line('C is greatest'); END IF; ELSE /*Nested-if2 */ dbms_output.put_line('Checking Nested-IF 2'); IF( b > c ) THEN dbms_output.put_line('B is greatest'); ELSE dbms_output.put_line('C is greatest'); END IF; END IF; dbms_output.put_line('Program completed.'); END; /
Code Penjelasan:
- Code baris 2-4: Mendeklarasikan variabel 'a', 'b', dan 'c' sebagai 'NUMBER' dan menginisialisasinya dengan 10, 15, dan 20.
- Code baris 6: Mencetak pernyataan “Program dimulai”.
- Code baris 7: Memeriksa kondisi 1, apakah 'a' lebih besar dari 'b'.
- Code baris 10: Jika 'a' lebih besar dari 'b', if bersarang 1 memeriksa apakah 'a' lebih besar dari 'c'.
- Code baris 11-13: Jika 'a' masih lebih besar, 'A adalah yang terbesar' dicetak; jika tidak, 'C adalah yang terbesar' dicetak.
- Code baris 18: Jika kondisi1 mengembalikan nilai false, if bersarang 2 memeriksa apakah 'b' lebih besar dari 'c'.
- Code baris 19-21: Jika 'b' lebih besar dari 'c', maka akan dicetak 'B adalah yang terbesar'; jika tidak, maka akan dicetak 'C adalah yang terbesar'.
- Code baris 24: Mencetak pernyataan “Program selesai”.
Keluaran kode:
Program started. Checking Nested-IF 2 C is greatest Program completed.
Perbandingan Pernyataan Pengambilan Keputusan
Tabel di bawah ini merangkum berbagai pernyataan bersyarat yang telah dibahas, sehingga pernyataan yang tepat dapat dipilih untuk situasi tertentu.
| Tipe | Deskripsi | penggunaan |
|---|---|---|
| JIKA KEMUDIAN | Memeriksa kondisi Boolean; jika TRUE, kode di dalam blok 'THEN' akan dieksekusi. | Untuk melewati atau mengeksekusi blok tertentu berdasarkan kondisi yang ditetapkan. |
| JIKA-MAKA-LAIN | Memeriksa kondisi Boolean; jika BENAR, blok 'THEN' dijalankan, jika SALAH, blok 'ELSE' dijalankan. | Paling tepat digunakan dalam kondisi 'ini atau itu'. |
| JIKA-MAKA-ELSIF | Memeriksa kondisi secara berurutan. Blok pertama yang mengembalikan TRUE akan dieksekusi. Jika tidak ada yang TRUE, blok 'ELSE' akan dijalankan. | Digunakan untuk memilih dari lebih dari dua alternatif. |
| BERSARANG-JIKA | Memungkinkan satu atau lebih pernyataan IF-THEN atau IF-THEN-ELSIF di dalam pernyataan lainnya. | Terutama digunakan dalam situasi kondisi bersarang. |


