Oracle PL / SQL JIKA ADA Pernyataan Lain: ELSIF, NESTED-IF

Isi kandungan:

Anonim

Apakah Pernyataan Membuat Keputusan?

Pernyataan membuat keputusan adalah mereka yang akan menentukan kawalan aliran penyataan SQL berdasarkan syarat. Ini memberi pengaturcara kawalan yang lebih baik untuk mencegah kod tertentu daripada dijalankan (rajah 1) atau memilih kod yang diinginkan berdasarkan keadaan (rajah 2). Di bawah ini adalah gambaran bergambar dari "Pernyataan Membuat Keputusan".

Diagram Penyataan Membuat Keputusan

Jenis Pernyataan Membuat Keputusan:

Oracle menyediakan jenis pernyataan membuat keputusan berikut.

  • SEKIRANYA
  • JIKA-LAIN-LAIN
  • JIKA-BAHAWA-ELSIF
  • BERSIH-JIKA
  • KES
  • KES yang dicari

Dalam tutorial ini, anda akan belajar-

  • Pengenalan Penyataan Membuat Keputusan
  • Penyataan IF-THEN
  • Penyataan IF-THEN-ELSE
  • Penyataan IF-THEN-ELSIF
  • Penyata NESTED-IF

Penyataan IF-THEN

Pernyataan IF-THEN digunakan terutamanya untuk melaksanakan bahagian kod tertentu hanya apabila keadaannya dipenuhi.

Keadaan tersebut harus menghasilkan Boolean (Betul / Salah). Ini adalah pernyataan bersyarat asas yang akan membolehkan ORACLE melaksanakan / melangkau sekeping kod tertentu berdasarkan keadaan yang telah ditentukan sebelumnya.

Sintaks untuk JIKA ADA Penyataan:

IF THEN-executed only if the condition returns TRUEEND if;
  • Dalam sintaks di atas, kata kunci 'IF' akan diikuti dengan keadaan yang dinilai menjadi 'BENAR' / 'SALAH'.
  • Kawalan akan melaksanakan hanya jika keadaan kembali .
  • Sekiranya keadaan dievaluasi menjadi maka, SQL akan melangkau , dan ia akan mula melaksanakan kod di sebelah blok 'END IF'.

Catatan: Apabila keadaan dinilai menjadi 'NULL', maka SQL akan menganggap 'NULL' sebagai 'SALAH'.

Contoh 1 : Dalam contoh ini, kita akan mencetak mesej apabila jumlahnya lebih besar dari 100. Untuk itu, kita akan melaksanakan kod berikut

Untuk mencetak mesej apabila nombor bernilai lebih dari 100, kami melaksanakan kod 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 Kod:

  • Baris kod 2: Menyatakan pemboleh ubah 'a' sebagai 'NOMBOR' jenis data dan memulakannya dengan nilai '10'.
  • Baris kod 4: Mencetak pernyataan "Program dimulakan".
  • Baris kod 5: Memeriksa keadaan, sama ada pemboleh ubah 'a' lebih besar daripada '100.'
  • Baris kod 6: Sekiranya 'a' lebih besar dari '100', maka "a lebih besar dari 100" akan dicetak. Sekiranya 'a' lebih kecil daripada atau sama dengan 100, maka keadaan gagal, sehingga penyataan percetakan di atas tidak diendahkan.
  • Baris kod 8: Mencetak pernyataan "Program selesai".

Keluaran Kod:

Program started.Program completed. 

Contoh 2: Dalam contoh ini, kita akan mencetak mesej jika abjad yang diberikan terdapat dalam huruf vokal Inggeris (A, E, I, O, U).

Untuk mencetak mesej apabila watak yang diberikan adalah Vokal, kami melaksanakan kod 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 Kod:

  • Baris kod 2: Menyatakan pemboleh ubah 'a' sebagai 'CHAR' jenis data 1 'dan memulakannya dengan nilai' u '.
  • Baris kod 4: Memeriksa keadaan, sama ada pemboleh ubah 'a' ada dalam senarai ('A', 'E', 'I', 'O', 'U').
  • Nilai 'a' telah ditukar menjadi huruf besar sebelum membandingkan untuk membuat perbandingan tidak peka huruf besar kecil.
  • Baris kod 5: Sekiranya 'a' terdapat dalam senarai, maka pernyataan "Watak dalam Vokal Bahasa Inggeris" akan dicetak. Sekiranya keadaan gagal, maka program ini tidak akan memberikan apa-apa output, kerana di luar blok IF-THEN, kami belum mengeluarkan kenyataan percetakan.

Keluaran Kod:

The character is in English Vowels

Penyataan IF-THEN-ELSE

  • Pernyataan IF-THEN-ELSE digunakan terutamanya untuk memilih antara dua alternatif berdasarkan keadaan.
  • Berikut adalah perwakilan sintaks pernyataan IF-THEN-ELSE.

Sintaks untuk Penyataan 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 keadaan yang dinilai menjadi 'BENAR' / 'SALAH'.
  • Kawalan akan melaksanakan hanya jika keadaan kembali .
  • Sekiranya keadaan dievaluasi ke maka, SQL akan melaksanakan .
  • Walau apa pun, salah satu dari dua blok tindakan akan dilaksanakan.

Catatan: Setiap kali keadaan dinilai menjadi 'NULL', maka SQL akan menganggap 'NULL' sebagai 'FALSE'.

Contoh 1 : Dalam contoh ini, kita akan mencetak mesej sama ada nombor yang diberikan itu 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 Kod:

  • Baris kod 2: Menyatakan pemboleh ubah 'a' sebagai 'NOMBOR' jenis data dan memulakannya dengan nilai '11'.
  • Baris kod 4: Mencetak pernyataan "Program dimulakan".
  • Baris kod 5: Memeriksa keadaan, sama ada modulus pemboleh ubah 'a' by '2' adalah 0.
  • Baris kod 6: Jika '0', maka "a is genap" akan dicetak.
  • Baris kod 7: Sekiranya nilai modulus tidak sama dengan '0', maka keadaan kembali , jadi mesej "a adalah nombor ganjil" akan dicetak.
  • Baris kod10: Mencetak pernyataan "Program selesai"

Keluaran Kod:

Program started.a is odd numberProgram completed. 

Penyataan IF-THEN-ELSIF

  • Pernyataan IF-THEN-ELSIF digunakan terutamanya di mana satu alternatif harus dipilih dari satu set alternatif, di mana setiap alternatif mempunyai syarat tersendiri untuk dipenuhi.
  • Syarat pertama yang kembali akan dilaksanakan, dan syarat selebihnya akan dilangkau.
  • Pernyataan IF-THEN-ELSIF mungkin mengandungi blok 'ELSE' di dalamnya. Blok 'ELSE' ini akan dilaksanakan jika tiada syarat yang dipenuhi.

Catatan : Blok ELSE adalah pilihan dalam pernyataan bersyarat ini. Sekiranya tidak ada blok ELSE, dan tidak ada syarat yang dipenuhi, pengawal akan melangkau semua blok tindakan dan mula melaksanakan bahagian kod yang tinggal.

Sintaks untuk Penyataan IF-THEN-ELSIF:

IF THEN-executed only if the condition returns TRUE ELSIF  ELSIF  ELSE -optionalEND if;
  • Dalam sintaks di atas, kawalan akan melaksanakan hanya jika condition1 mengembalikan .
  • Sekiranya syarat1 tidak dipenuhi, maka pengawal akan memeriksa keadaan2.
  • Pengawal akan keluar dari pernyataan IF dalam dua kes berikut.
    • Apabila pengawal menemui sebarang keadaan yang mengembalikan . Dalam kes ini, blok_ tindakan yang sesuai akan dijalankan dan pengawal akan keluar dari blok penyataan IF ini dan akan mula menjalankan kod yang tinggal.
    • Apabila tiada syarat yang dipenuhi, pengawal ketika itu akan melaksanakan blok ELSE jika ada, kemudian akan keluar dari penyataan IF.

Catatan: Setiap kali keadaan dinilai menjadi 'NULL', maka SQL akan menganggap 'NULL' sebagai 'FALSE'.

Contoh 1: Tanpa blok ELSE

Dalam contoh ini, kita akan mencetak gred berdasarkan tanda yang diberikan tanpa syarat lain (mark> = 70 Gred A, mark> = 40 dan mark <70 Grade B, mark> = 35 dan mark <40 Grade 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 Kod:

  • Baris kod 2: Menyatakan pemboleh ubah 'tanda' sebagai 'NOMBOR' jenis data dan memulakannya dengan nilai '55'.
  • Baris kod 4: Mencetak pernyataan "Program dimulakan".
  • Baris kod 5: Memeriksa keadaan1, sama ada 'tanda' lebih besar atau sama dengan 70.
  • Baris kod 7: Oleh kerana condition1 gagal, maka condition2 '70> mark> = 40 'diperiksa.
  • Baris kod 8: Condtition2 mengembalikan , oleh itu mesej 'Gred B' akan dicetak.
  • Baris kod12: Mencetak pernyataan "Program selesai".
  • Dalam kes ini, syarat3 'tanda <35' akan dilangkau, kerana pengawal menemui satu keadaan yang kembali sebelum syarat3.

Keluaran Kod:

Program started.Grade BProgram completed.

Contoh 2 : Dengan blok ELSE

Dalam contoh ini, kita akan mencetak gred berdasarkan tanda yang diberikan dengan keadaan yang lain (mark> = 70 Gred A, mark> = 40 dan mark <70 Grade B, mark> = 35 dan mark <40 Grade C, other 'Tiada Gred').

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 Kod:

  • Baris kod 2: Menyatakan pemboleh ubah 'mark' sebagai 'NOMBOR' jenis data dan memulakannya dengan nilai '25'.
  • Baris kod 4: Mencetak pernyataan "Program dimulakan".
  • Baris kod 5: Memeriksa keadaan 1, sama ada 'tanda' lebih besar atau sama dengan 70.
  • Baris kod 7: Oleh kerana condition1 gagal, maka condition2 '70> mark> = 40 'diperiksa.
  • Baris kod 8: Oleh kerana condition2 gagal, maka condition3 '40> mark> = 35 'diperiksa.
  • Baris kod 11: Oleh kerana semua syarat gagal, kawalan sekarang akan memeriksa keberadaan blok ELSE, dan ia akan mencetak mesej 'No Grade' dari blok ELSE.
  • Garis kod14: Mencetak pernyataan "Program selesai".

Keluaran Kod:

Program started.No GradeProgram completed.

Penyata NESTED-IF

  • Pernyataan NESTED-IF pada dasarnya membenarkan pengaturcara meletakkan satu atau lebih keadaan 'IF' di dalam keadaan 'tindak balas' blok 'IF selain pernyataan biasa.
  • Setiap keadaan 'IF' harus mempunyai pernyataan 'IF IF' yang berasingan yang menandakan akhir skop tertentu.
  • Pernyataan 'IF' akan menganggap penyataan 'IF IF' terdekat sebagai titik akhir untuk keadaan tertentu.
  • Perwakilan bergambar untuk NESTED-IF ditunjukkan di bawah rajah.
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 mengandungi satu lagi pernyataan IF dalam blok tindakannya.
  • Condition1 mengembalikan , kemudian kawalan akan menjalankan dan memeriksa condition2.
  • Sekiranya condition2 juga mengembalikan , maka juga akan dijalankan.
  • Sekiranya syarat2 dinilai menjadi maka, SQL akan melangkau .

Di sini kita akan melihat contoh Nested If -

Contoh Penyataan Nested- If: Paling besar daripada tiga nombor

Dalam contoh ini, kita akan mencetak tiga nombor terbesar dengan menggunakan pernyataan Nested-If. Nombor akan diberikan di bahagian menyatakan, seperti yang anda lihat dalam kod di bawah, iaitu Nombor = 10,15 dan 20 dan jumlah maksimum akan diambil menggunakan penyataan bersarang-jika.

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 Kod:

  • Baris kod 2: Menyatakan pemboleh ubah 'a' sebagai 'NOMBOR' jenis data dan memulakannya dengan nilai '10'.
  • Baris kod 3: Menyatakan pemboleh ubah 'b' sebagai jenis data 'NOMBOR' dan memulakannya dengan nilai '15'.
  • Baris kod 4: Menyatakan pemboleh ubah 'c' sebagai jenis data 'NOMBOR' dan memulakannya dengan nilai '20'.
  • Baris kod 6: Mencetak pernyataan "Program dimulakan" (baris 6).
  • Baris kod 7: Memeriksa syarat1, sama ada 'a' lebih besar daripada 'b' (baris 7).
  • Baris kod 10: Sekiranya 'a' lebih besar daripada 'b, maka keadaan di' bersarang-jika 1 'akan memeriksa apakah' a 'lebih besar daripada' c '(baris 10).
  • Baris kod 13: Sekiranya masih 'a' lebih besar, maka mesej 'A paling besar' akan dicetak (baris 11). Jika tidak, syarat2 gagal, maka 'C terhebat' akan dicetak (baris 13).
  • Baris kod 18: Sekiranya keadaan1 kembali palsu, maka keadaan di 'bersarang-jika 2' akan memeriksa sama ada 'b' lebih besar daripada 'c' (baris 18).
  • Baris kod 21: Sekiranya 'b' lebih besar daripada 'c', maka mesej 'B paling besar' akan dicetak (baris 19), jika tidak jika syarat2 gagal, maka 'C paling hebat' akan dicetak (baris 21).
  • Baris kod 24: Mencetak pernyataan "Program selesai" (baris 24).

Keluaran kod:

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

Ringkasan

Dalam bab ini, kita telah mempelajari pernyataan membuat keputusan yang berbeza dan sintaksis serta contohnya. Jadual di bawah memberikan ringkasan pelbagai pernyataan bersyarat yang telah kita bincangkan.

JENIS

PENERANGAN

PENGGUNAAN

SEKIRANYA

Memeriksa keadaan Boolean, jika kode BENAR di blok 'KEMUDIAN' akan dijalankan.

Untuk melangkau, / laksanakan kod tertentu berdasarkan keadaan.

JIKA-LAIN-LAIN

Memeriksa keadaan Boolean, jika kod BENAR di blok 'KEMUDIAN' akan dijalankan, jika kod palsu di blok 'ELSE' dijalankan.

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

JIKA-BAHAWA-ELSIF

Memeriksa keadaan Boolean mengikut urutan. Blok pertama dalam urutan yang mengembalikan keadaan BENAR akan dijalankan. Sekiranya tiada syarat dalam urutan itu BENAR, maka kod dalam blok 'ELSE' dijalankan.

Digunakan untuk memilih lebih daripada dua alternatif.

BERSIH-JIKA

Membolehkan satu atau lebih penyataan IF-THEN atau IF-THEN-ELSIF di dalam pernyataan IF-THEN atau IF-THEN-ELSIF lain.

Terutamanya digunakan dalam keadaan keadaan bersarang.