Apakah Penyataan KES?
Pernyataan CASE serupa dengan pernyataan IF-THEN-ELSIF yang memilih satu alternatif berdasarkan keadaan dari pilihan yang ada.
- Pernyataan CASE menggunakan "selector" dan bukannya ungkapan Boolean untuk memilih urutan.
- Nilai ungkapan dalam pernyataan CASE akan dianggap sebagai pemilih.
- Ungkapan itu boleh menjadi jenis apa pun (aritmetik, pemboleh ubah, dll.)
- Setiap alternatif diberikan dengan nilai tertentu (pemilih), dan alternatif dengan nilai pemilih yang sepadan dengan nilai ekspresi bersyarat akan dilaksanakan.
- Tidak seperti IF-THEN-ELSIF, pernyataan CASE juga boleh digunakan dalam pernyataan SQL.
- Blok ELSE dalam pernyataan CASE memegang urutan yang perlu dilaksanakan apabila tidak ada alternatif yang dipilih.
Sintaks:
CASE (expression)WHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Dalam sintaks di atas, ungkapan akan mengembalikan nilai yang boleh menjadi jenis apa pun (pemboleh ubah, nombor, dll.).
- Setiap klausa 'KETIKA' dianggap sebagai alternatif yang mempunyai
dan . - Klausa 'KETIKA' yang sesuai dengan nilai seperti ungkapan akan dipilih, dan
yang sesuai akan dijalankan. - Blok 'ELSE' adalah opsional yang menahan
yang perlu dijalankan apabila tidak ada alternatif yang sesuai dengan nilai ekspresi. - 'TAMAT' menandakan akhir pernyataan CASE, dan ini adalah bahagian wajib dari KES.
Contoh 1: Pengiraan Aritmetik menggunakan Kes
Dalam contoh ini, kita akan melakukan pengiraan aritmetik antara dua nombor 55 dan 5.
DECLAREa NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='MULTIPLY’;BEGINdbms_output.put_line(‘Program started.' );CASE (arth_operation)WHEN ‘ADD’ THEN dbms_output.put_line(‘Addition of the numbers are: '|| a+b );WHEN ‘SUBTRACT' THEN dbms_output.put_line(‘Subtraction of the numbers are: '||a-b );WHEN ‘MULTIPLY' THEN dbms_output.put_line(‘Multiplication of the numbers are: '|| a*b);WHEN ‘DIVIDE' THEN dbms_output.put_line(‘Division of the numbers are:'|| a/b);ELSE dbms_output.put_line(‘No operation action defined. Invalid operation');END CASE;dbms_output.put_line(‘Program completed.' );END;/
Penjelasan Kod:
- Baris kod 2: Menyatakan pemboleh ubah 'a' sebagai 'NOMBOR' jenis data dan memulakannya dengan nilai '55'.
- Baris kod 3: Menyatakan pemboleh ubah 'b' sebagai jenis data 'NOMBOR' dan memulakannya dengan nilai '5.'
- Baris kod 4: Menyatakan pemboleh ubah 'arth_operation' sebagai 'VARCHAR2' jenis data bersaiz 20 dan memulakannya dengan nilai 'MULTIPLY'.
- Baris kod 6: Mencetak pernyataan "Program dimulakan".
- Baris kod 7: KES memeriksa nilai ungkapan. Dalam kes ini, nilai pemboleh ubah 'arth_operation' adalah 'MULTIPLY'. Nilai ini akan dianggap sebagai pemilih untuk penyataan CASE ini sekarang.
- Baris kod 10: Klausa KETIKA dengan nilai 'MULTIPLY' sesuai dengan nilai pemilih, oleh itu pengawal akan memilih blok tindakan ini dan akan mencetak mesej 'Pendaraban nombor adalah: 275'.
- Garis kod13: Menandakan akhir penyataan KES.
- Garis kod14: Mencetak pernyataan "Program selesai".
Keluaran Kod:
Program started.Multiplication of the numbers are: 275Program completed.
Penyataan KES yang dicari
Pernyataan SEARCHED CASE adalah serupa dengan pernyataan CASE, daripada menggunakan pemilih untuk memilih alternatif, SEASEED CASE secara langsung akan mempunyai ungkapan yang ditentukan dalam klausa KETIKA.
- Klausa WHEN pertama yang memenuhi syarat akan dilaksanakan, dan pengawal akan melangkau baki alternatif.
Sintaks:
CASEWHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Dalam sintaks di atas, setiap klausa KETIKA mempunyai
dan yang terpisah. - Klausa KETIKA yang mana ungkapan mengembalikan BENAR akan dilaksanakan.
- Blok 'ELSE' adalah opsional yang menahan
yang perlu dilaksanakan apabila tidak ada alternatif yang memuaskan. - 'TAMAT' menandakan akhir pernyataan CASE dan, itu adalah bahagian wajib dari KES.
Contoh 1: Pengiraan Aritmetik menggunakan Carian Kes
Dalam contoh ini, kita akan melakukan pengiraan aritmetik antara dua nombor 55 dan 5.
DECLARE a NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='DIVIDE';BEGINdbms_output.put_line(‘Program started.' );CASEWHEN arth_operation = 'ADD'THEN dbms_output.put_line(‘Addition of the numbers are: '||a+b );WHEN arth_operation = ‘SUBTRACT'THEN dbms_output.put_line(‘Subtraction of the numbers are: '|| a-b);WHEN arth_operation = ‘MULTIPLY’THEN dbms_output.put_line(‘Multiplication of the numbers are: '|| a*b );WHEN arth_operation = ’DIVIDE'THEN dbms_output.put_line(‘Division of the numbers are: '|| a/b ):ELSE dbms_output.put_line(‘No operation action defined. Invalid operation');END CASE;dbms_output.put_line(‘Program completed.' );END;/
Penjelasan Kod:
- Baris kod 2: Menyatakan pemboleh ubah 'a' sebagai 'NOMBOR' jenis data dan memulakannya dengan nilai '55'.
- Baris kod 3: Menyatakan pemboleh ubah 'b' sebagai jenis data 'NOMBOR' dan memulakannya dengan nilai '5'.
- Baris kod 4: Menyatakan pemboleh ubah 'arth_operation' sebagai 'VARCHAR2' jenis data bersaiz 20 dan memulakannya dengan nilai 'DIVIDE.'
- Baris kod 6: Mencetak pernyataan "Program dimulakan".
- Baris kod 7: Penyataan SEARCHED CASE bermula. Kod dari baris 8 hingga baris 13 dilangkau kerana nilai pemilihnya (TAMBAHKAN, SUBTRAK, MULTIPLY) tidak sesuai dengan nilai 'arth_operation'.
- Baris kod 14: KETIKA ungkapan klausa "arth_operation = 'DIVIDE'" berpuas hati dan ungkapan itu mengembalikan BENAR.
- Baris kod 15: Action_block klausa KETIKA akan dilaksanakan, dan mesej 'Bahagian nombor adalah: 11' akan dicetak.
- Baris kod 17: Menandakan akhir penyataan KES.
- Baris kod 18: Mencetak pernyataan "Program selesai".
Keluaran Kod:
Program started.Division of the numbers are: 11Program completed.
Ringkasan
JENIS | PENERANGAN | PENGGUNAAN |
---|---|---|
KES |
Sama dengan pernyataan IF-THEN-ELSIF. 'SELECTOR' digunakan untuk memilih alternatif daripada ungkapan Boolean. |
Digunakan untuk memilih dari beberapa alternatif menggunakan 'SELECTOR' |
KES yang dicari |
Penyataan KES tanpa 'PEMILIH' sebenar. Sebaliknya, ia mengandungi keadaan sebenar (yang dinilai menjadi BENAR / SALAH) yang akan memilih alternatif. |
Digunakan untuk memilih lebih daripada dua alternatif. |