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.

  • 🔀 Tujuan: Suatu kondisi yang mengembalikan nilai TRUE atau FALSE menentukan alur eksekusi.
  • ✅ JIKA-MAKA: Menjalankan blok kode hanya jika kondisinya BENAR, jika tidak maka akan dilewati.
  • ️ JIKA-MAKA-LAIN: Memilih antara dua blok, satu untuk BENAR dan satu untuk SALAH.
  • 🪜 JIKA-MAKA-ELSIF: Menguji kondisi secara berurutan dan menjalankan kondisi pertama yang bernilai TRUE, dengan kondisi ELSE opsional.
  • 🧩 BERSARANG-JIKA: Menempatkan pernyataan IF di dalam pernyataan IF lainnya untuk kondisi gabungan.
  • ⚠️ Aturan NULL: Suatu kondisi yang bernilai NULL diperlakukan sebagai FALSE.
  • 🔚 pemutus: Setiap pernyataan IF harus ditutup dengan pernyataan END IF yang sesuai.

Oracle PL/SQL IF THEN ELSE ELSIF

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.

Diagram Pernyataan Pengambilan Keputusan
Diagram 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.

Alur pernyataan IF bersarang

Struktur pernyataan IF bersarang

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.

Pertanyaan Umum Demo Slot

ELSIF menguji urutan kondisi yang saling eksklusif. IF bersarang menempatkan satu kondisi di dalam kondisi lain, sehingga pengujian bagian dalam hanya berjalan setelah pengujian bagian luar sudah bernilai TRUE.

Suatu kondisi yang menghasilkan nilai NULL diperlakukan sebagai FALSE, sehingga blok THEN-nya dilewati. Hal ini penting ketika nilai yang dibandingkan mungkin berupa null, karena cabang tersebut tidak akan berjalan seperti yang diharapkan oleh pemula.

CASE lebih jelas ketika satu ekspresi dibandingkan dengan banyak nilai tetap. IF-THEN-ELSIF cocok untuk kondisi rentang yang tidak terkait. Keduanya dapat mengekspresikan logika yang sama, tetapi CASE lebih mudah dibaca untuk pencocokan nilai.

Ya. AI dapat meratakan IF bersarang menjadi rantai ELSIF atau CASE, dan menemukan kondisi yang tidak mungkin tercapai. Uji penulisan ulang, karena penataan ulang kondisi dapat mengubah cabang mana yang dijalankan.

END IF menandai di mana blok kondisional berakhir, yang sangat penting ketika IF bersarang. Tanpa itu, kompiler tidak dapat mengetahui pernyataan mana yang termasuk dalam kondisi tersebut, dan akan menimbulkan kesalahan.

Ringkaslah postingan ini dengan: