Oracle PL / SQL IF THEN ELSE Pernyataan: ELSIF, NESTED-IF

Daftar Isi:

Anonim

Apa itu Pernyataan Pengambilan Keputusan?

Pernyataan pengambilan keputusan adalah mereka yang akan memutuskan aliran-kontrol pernyataan SQL berdasarkan kondisi. Ini memberi programmer kontrol yang lebih baik untuk mencegah kode tertentu dijalankan (diagram 1) atau memilih kode yang diinginkan berdasarkan kondisi (diagram 2). Di bawah ini adalah representasi bergambar dari "Pernyataan Pengambilan Keputusan".

Diagram Pernyataan Pengambilan Keputusan

Jenis Pernyataan Pengambilan Keputusan:

Oracle menyediakan jenis pernyataan pengambilan keputusan berikut.

  • JIKA KEMUDIAN
  • JIKA-LALU-LAGI
  • JIKA-LALU-ELSIF
  • NESTED-IF
  • KASUS
  • KASUS PENELUSURAN

Dalam tutorial ini, Anda akan belajar-

  • Pengantar Pernyataan Pengambilan Keputusan
  • Pernyataan IF-THEN
  • Pernyataan IF-THEN-ELSE
  • Pernyataan IF-THEN-ELSIF
  • Pernyataan NESTED-IF

Pernyataan IF-THEN

Pernyataan IF-THEN terutama digunakan untuk mengeksekusi bagian kode tertentu hanya jika kondisinya terpenuhi.

Kondisi harus menghasilkan Boolean (True / False). Ini adalah pernyataan bersyarat dasar yang akan memungkinkan ORACLE untuk mengeksekusi / melewati bagian kode tertentu berdasarkan kondisi yang telah ditentukan sebelumnya.

Sintaks untuk Pernyataan IF THEN:

IF THEN-executed only if the condition returns TRUEEND if;
  • Dalam sintaks di atas, kata kunci 'IF' akan diikuti dengan kondisi yang bernilai 'TRUE' / 'FALSE'.
  • Kontrol akan mengeksekusi hanya jika kondisi mengembalikan .
  • Jika kondisi mengevaluasi ke , SQL akan melewati , dan itu akan mulai mengeksekusi kode di sebelah blok 'END IF'.

Catatan: Setiap kali kondisi dievaluasi menjadi 'NULL', maka SQL akan memperlakukan 'NULL' sebagai 'FALSE'.

Contoh 1 : Pada contoh ini, kita akan mencetak pesan jika angkanya lebih dari 100. Untuk itu, kita akan mengeksekusi kode berikut

Untuk mencetak pesan ketika angka memiliki nilai lebih dari 100, kami menjalankan kode berikut.

DECLAREa NUMBER :=10;BEGINdbms_output.put_line(‘Program started.' );IF( a> 100 ) THENdbms_output.put_line('a is greater than 100');END IF;dbms_output.put_line(‘Program completed.');END;/

Penjelasan Kode:

  • Baris kode 2: Mendeklarasikan variabel 'a' sebagai tipe data 'NUMBER' dan menginisialisasinya dengan nilai '10'.
  • Baris kode 4: Mencetak pernyataan "Program dimulai".
  • Baris kode 5: Memeriksa kondisi, apakah variabel 'a' lebih besar dari '100.'
  • Baris kode 6: Jika 'a' lebih besar dari '100', maka "a lebih besar dari 100" akan dicetak. Jika 'a' lebih kecil dari atau sama dengan 100, maka kondisi gagal, sehingga pernyataan pencetakan di atas diabaikan.
  • Baris kode 8: Mencetak pernyataan "Program selesai".

Keluaran Kode:

Program started.Program completed. 

Contoh 2: Dalam contoh ini, kita akan mencetak pesan jika alfabet tertentu ada dalam vokal bahasa Inggris (A, E, I, O, U).

Untuk mencetak pesan ketika karakter yang diberikan adalah Vokal, kami menjalankan kode berikut.

DECLAREa CHAR(1) :=’u’;BEGINIF UPPER(a) in ('A’,'E','I','0','U' ) THENdbms_output.put_line(‘The character is in English Vowels');END IF;END;/

Penjelasan Kode:

  • Baris kode 2: Mendeklarasikan variabel 'a' sebagai 'CHAR' dengan tipe data '1' dan menginisialisasinya dengan nilai 'u'.
  • Baris kode 4: Memeriksa kondisi, apakah variabel 'a' ada dalam daftar ('A', 'E', 'I', 'O', 'U').
  • Nilai 'a' telah diubah menjadi huruf besar sebelum membandingkan agar perbandingan tidak peka huruf besar / kecil.
  • Baris kode 5: Jika 'a' ada dalam daftar, maka pernyataan "Karakter dalam Vokal Inggris" akan dicetak. Jika kondisi gagal, maka program ini tidak akan memberikan output apapun, karena diluar blok IF-THEN kami belum mengeluarkan print statement apapun.

Keluaran Kode:

The character is in English Vowels

Pernyataan IF-THEN-ELSE

  • Pernyataan IF-THEN-ELSE terutama digunakan untuk memilih di antara dua alternatif berdasarkan kondisi.
  • Di bawah ini adalah representasi sintaks dari pernyataan IF-THEN-ELSE.

Sintaks untuk Pernyataan IF-THEN-ELSE:

IF THEN -executed only if the condition returns TRUE ELSE -execute if the condition failed (returns FALSE) END if;
  • Dalam sintaks di atas, kata kunci 'IF' akan diikuti dengan kondisi yang bernilai 'TRUE' / 'FALSE'.
  • Kontrol akan mengeksekusi hanya jika kondisi mengembalikan .
  • Jika kondisi mengevaluasi ke , SQL akan mengeksekusi .
  • Bagaimanapun, salah satu dari dua blok tindakan akan dieksekusi.

Catatan: Setiap kali kondisi terevaluasi menjadi 'NULL', maka SQL akan memperlakukan 'NULL' sebagai 'FALSE'.

Contoh 1 : Dalam contoh ini, kita akan mencetak pesan apakah bilangan yang diberikan ganjil atau genap.

DECLAREa NUMBER:=11;BEGINdbms_output.put_line (‘Program started');IF( mod(a,2)=0) THENdbms_output.put_line('a is even number' );ELSEdbms_output.put_line('a is odd number1);END IF;dbms_output.put_line (‘Program completed.’);END;/

Penjelasan Kode:

  • Baris kode 2: Mendeklarasikan variabel 'a' sebagai tipe data 'NUMBER' dan menginisialisasinya dengan nilai '11'.
  • Baris kode 4: Mencetak pernyataan "Program dimulai".
  • Baris kode 5: Memeriksa kondisi apakah modulus variabel 'a' by '2' bernilai 0.
  • Baris kode 6: Jika '0', maka "a adalah bilangan genap" akan dicetak.
  • Baris kode 7: Jika nilai modulus tidak sama dengan '0', maka kondisi mengembalikan , sehingga pesan "a adalah angka ganjil" akan dicetak.
  • Baris kode10: Mencetak pernyataan "Program selesai"

Keluaran Kode:

Program started.a is odd numberProgram completed. 

Pernyataan IF-THEN-ELSIF

  • Pernyataan IF-THEN-ELSIF terutama digunakan di mana satu alternatif harus dipilih dari sekumpulan alternatif, di mana setiap alternatif memiliki kondisi sendiri-sendiri yang harus dipenuhi.
  • Kondisi pertama yang mengembalikan akan dijalankan, dan kondisi lainnya akan dilewati.
  • Pernyataan IF-THEN-ELSIF mungkin berisi blok 'ELSE' di dalamnya. Blok 'ELSE' ini akan dijalankan jika tidak ada kondisi yang terpenuhi.

Catatan : Blok ELSE adalah opsional dalam pernyataan bersyarat ini. Jika tidak ada blok ELSE, dan tidak ada kondisi yang terpenuhi, maka pengontrol akan melewati semua blok tindakan dan mulai mengeksekusi bagian kode yang tersisa.

Sintaks untuk Pernyataan IF-THEN-ELSIF:

IF THEN-executed only if the condition returns TRUE ELSIF  ELSIF  ELSE -optionalEND if;
  • Dalam sintaks di atas, kontrol akan mengeksekusi hanya jika condition1 mengembalikan .
  • Jika kondisi1 tidak terpenuhi, maka pengontrol akan memeriksa kondisi2.
  • Kontroler akan keluar dari pernyataan IF dalam dua kasus berikut.
    • Ketika pengontrol menemukan kondisi apa pun yang mengembalikan . Dalam kasus ini, action_block terkait akan dijalankan dan pengontrol akan keluar dari blok pernyataan IF ini dan akan mulai mengeksekusi kode yang tersisa.
    • Jika tidak ada kondisi yang terpenuhi, maka kontroler akan mengeksekusi blok ELSE jika ada, kemudian akan keluar dari pernyataan IF.

Catatan: Setiap kali kondisi terevaluasi menjadi 'NULL', maka SQL akan memperlakukan 'NULL' sebagai 'FALSE'.

Contoh 1: Tanpa blok ELSE

Dalam contoh ini, kita akan mencetak nilai berdasarkan nilai yang diberikan tanpa syarat lain (tandai> = 70 Tingkat A, tandai> = 40 dan tandai <70 Tingkat B, tandai> = 35 dan tandai <40 Tingkat C).

DECLAREmark NUMBER :=55;BEGINdbms_output.put_line(‘Program started.’ );IF( mark >= 70) THENdbms_output.put_line(‘Grade A’);ELSIF(mark >= 40 AND mark < 70) THENdbms_output.put_line(‘Grade B');ELSIF(mark >=35 AND mark < 40) THENdbms_output.put_line(‘Grade C’);END IF;dbms_output.put_line(‘Program completed.’);END;/

Penjelasan Kode:

  • Baris kode 2: Mendeklarasikan variabel 'mark' sebagai tipe data 'NUMBER' dan menginisialisasinya dengan nilai '55'.
  • Baris kode 4: Mencetak pernyataan "Program dimulai".
  • Baris kode 5: Memeriksa condition1, apakah 'mark' lebih besar atau sama dengan 70.
  • Baris kode 7: Karena condition1 gagal, maka condition2 '70> mark> = 40 'dicentang.
  • Baris kode 8: Condtition2 mengembalikan , maka pesan 'Grade B' akan dicetak.
  • Baris kode12: Mencetak pernyataan "Program selesai".
  • Dalam kasus ini, condition3 'mark <35' akan dilewati, karena controller menemukan satu kondisi yang mengembalikan sebelum condition3.

Keluaran Kode:

Program started.Grade BProgram completed.

Contoh 2 : Dengan blok ELSE

Dalam contoh ini, kita akan mencetak nilai berdasarkan nilai yang diberikan dengan kondisi lain (mark> = 70 Grade A, tandai> = 40 dan tandai <70 Grade B, tandai> = 35 dan tandai <40 Grade C, jika tidak 'Tidak Ada Nilai').

DECLAREmark NUMBER :=25;BEGINdbms_output.put_line(‘Program started.’ );IF( mark >= 70) THENdbms_output.put_line(‘Grade A’);ELSIF(mark >= 40 AND mark < 70) THENdbms_output.put_line(‘Grade B');ELSIF(mark >=35 AND mark < 40) THENdbms_output.put_line(‘Grade C);ELSEdbms_output.put_line(‘No Grade’);END IF;dbms_output.put_line(‘Program completed.' );END;/

Penjelasan Kode:

  • Baris kode 2: Mendeklarasikan variabel 'mark' sebagai tipe data 'NUMBER' dan menginisialisasinya dengan nilai '25'.
  • Baris kode 4: Mencetak pernyataan "Program dimulai".
  • Baris kode 5: Memeriksa kondisi 1, apakah 'mark' lebih besar atau sama dengan 70.
  • Baris kode 7: Karena condition1 gagal, maka condition2 '70> mark> = 40 'dicentang.
  • Baris kode 8: Karena condition2 gagal, maka condition3 '40> mark> = 35 'dicentang.
  • Baris kode 11: Karena semua kondisi gagal, kontrol sekarang akan memeriksa keberadaan blok ELSE, dan itu akan mencetak pesan 'No Grade' dari blok ELSE.
  • Baris kode14: Mencetak pernyataan "Program selesai".

Keluaran Kode:

Program started.No GradeProgram completed.

Pernyataan NESTED-IF

  • Pernyataan NESTED-IF pada dasarnya memungkinkan pemrogram untuk menempatkan satu atau lebih kondisi 'IF' di dalam kondisi 'IF' lain selain pernyataan normal.
  • Setiap kondisi 'IF' harus memiliki pernyataan 'END IF' terpisah yang menandai akhir ruang lingkup dari tertentu.
  • Pernyataan 'IF' akan mempertimbangkan pernyataan 'END IF' terdekat sebagai titik akhir untuk kondisi tertentu itu.
  • Representasi bergambar untuk NESTED-IF ditunjukkan di bawah diagram.
IF THEN -executed only if the condition returns TRUE  IF  THEN  END IF; -END IF corresponds to condition2END IF; -END IF corresponds to condition1
Penjelasan Sintaks:
  • Dalam sintaks di atas, IF luar berisi satu lagi pernyataan IF di blok aksinya.
  • Kondisi1 mengembalikan , kemudian kontrol akan menjalankan dan memeriksa kondisi2.
  • Jika condition2 juga mengembalikan , maka juga akan dijalankan.
  • Jika condition2 dievaluasi ke , SQL akan melewati .

Di sini kita akan melihat contoh Nested If -

Contoh Pernyataan Nested- If: Terbesar dari tiga angka

Dalam contoh ini, kita akan mencetak tiga angka terbesar dengan menggunakan pernyataan Nested-If. Nomor akan diberikan pada bagian deklarasikan, seperti yang Anda lihat pada kode di bawah ini, yaitu Nomor = 10,15 dan 20 dan jumlah maksimum akan diambil menggunakan pernyataan nested-if.

DECLAREa NUMBER :=10;b NUMBER :=15;c NUMBER :=20;BEGINdbms_output.put_line(‘Program started.' );IF( a> b)THEN/*Nested-if l */dbms_output.put_line(’Checking Nested-IF 1');IF( a> c ) THENdbms_output.put_line(‘A is greatest’);ELSEdbms_output.put_line(‘C is greatest’);END IF;ELSE/*Nested-if2 */dbms_output.put_line('Checking Nested-IF 2' );IF( b> c ) THENdbms_output.put_line(’B is greatest' );ELSEdbms_output.put_line(’C is greatest' );END IF;END IF;dbms_output.put_line(‘Program completed.’ );END;/

Penjelasan Kode:

  • Baris kode 2: Mendeklarasikan variabel 'a' sebagai tipe data 'NUMBER' dan menginisialisasinya dengan nilai '10'.
  • Baris kode 3: Mendeklarasikan variabel 'b' sebagai tipe data 'NOMOR' dan menginisialisasinya dengan nilai '15'.
  • Baris kode 4: Mendeklarasikan variabel 'c' sebagai tipe data 'NUMBER' dan menginisialisasinya dengan nilai '20'.
  • Baris kode 6: Mencetak pernyataan "Program dimulai" (baris 6).
  • Baris kode 7: Memeriksa condition1, apakah 'a' lebih besar dari 'b' (baris 7).
  • Baris kode 10: Jika 'a' lebih besar dari 'b, maka kondisi' nested-if 1 'akan memeriksa apakah' a 'lebih besar dari' c '(baris 10).
  • Baris kode 13: Jika masih 'a' lebih besar, maka pesan 'A is greatest' akan dicetak (baris 11). Lain jika condition2 gagal, maka 'C is greatest' akan dicetak (baris 13).
  • Baris kode 18: Jika condition1 mengembalikan false, maka condition di 'nested-if 2' akan memeriksa apakah 'b' lebih besar dari 'c' (baris 18).
  • Baris kode 21: Jika 'b' lebih besar dari 'c', maka pesan 'B is greatest' akan dicetak (baris 19), sebaliknya jika condition2 gagal, maka 'C is greatest' akan dicetak (baris 21).
  • Baris kode 24: Mencetak pernyataan "Program selesai" (baris 24).

Output dari kode:

Program started.Checking Nested-IF 2C is greatestProgram completed.

Ringkasan

Dalam bab ini, kita telah mempelajari berbagai pernyataan pengambilan keputusan dan sintaksis serta contohnya. Tabel di bawah ini memberikan ringkasan dari berbagai pernyataan bersyarat yang telah kita diskusikan.

TIPE

DESKRIPSI

PEMAKAIAN

JIKA KEMUDIAN

Memeriksa kondisi Boolean, jika kode TRUE di blok 'THEN' akan dieksekusi.

Untuk melewati, / menjalankan kode tertentu berdasarkan kondisi.

JIKA-LALU-LAGI

Memeriksa kondisi Boolean, jika kode TRUE di blok 'THEN' akan dieksekusi, jika kode palsu di blok 'ELSE' dijalankan.

Paling sesuai dalam kondisi 'INI-ATAU-ITU'.

JIKA-LALU-ELSIF

Memeriksa kondisi Boolean secara berurutan. Blok pertama dalam urutan yang mengembalikan kondisi TRUE akan dieksekusi. Jika tidak ada kondisi dalam urutan yang BENAR, maka kode di blok 'ELSE' dijalankan.

Biasanya memilih dari lebih dari dua alternatif.

NESTED-IF

Mengizinkan satu atau lebih pernyataan IF-THEN atau IF-THEN-ELSIF di dalam pernyataan IF-THEN atau IF-THEN-ELSIF lainnya.

Terutama digunakan dalam situasi kondisi bersarang.