Apa Pernyataan CASE?
Pernyataan CASE mirip dengan pernyataan IF-THEN-ELSIF yang memilih satu alternatif berdasarkan kondisi dari opsi yang tersedia.
- Pernyataan CASE menggunakan "selector" daripada ekspresi Boolean untuk memilih urutan.
- Nilai ekspresi dalam pernyataan CASE akan diperlakukan sebagai pemilih.
- Ekspresi dapat berupa jenis apa saja (aritmatika, variabel, dll.)
- Setiap alternatif ditetapkan dengan nilai yang telah ditentukan sebelumnya (selektor), dan alternatif dengan nilai pemilih yang cocok dengan nilai ekspresi bersyarat akan dieksekusi.
- Tidak seperti IF-THEN-ELSIF, pernyataan CASE juga dapat digunakan dalam pernyataan SQL.
- Blok ELSE dalam pernyataan CASE menyimpan urutan yang perlu dieksekusi ketika tidak ada alternatif yang dipilih.
Sintaksis:
CASE (expression)WHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Dalam sintaks di atas, ekspresi akan mengembalikan nilai yang dapat berupa jenis apa pun (variabel, angka, dll.).
- Setiap klausa 'WHEN' diperlakukan sebagai alternatif yang memiliki
dan . - Klausa 'WHEN' yang cocok dengan nilai seperti ekspresi akan dipilih, dan
yang sesuai akan dieksekusi. - Blok 'ELSE' adalah opsional yang menahan
yang perlu dijalankan ketika tidak ada alternatif yang cocok dengan nilai ekspresi. - 'END' menandai akhir pernyataan CASE, dan ini merupakan bagian wajib dari CASE.
Contoh 1: Perhitungan Aritmatika menggunakan Kasus
Dalam contoh ini, kita akan melakukan perhitungan aritmatika antara dua angka 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 Kode:
- Baris kode 2: Mendeklarasikan variabel 'a' sebagai tipe data 'NUMBER' dan menginisialisasinya dengan nilai '55'.
- Baris kode 3: Mendeklarasikan variabel 'b' sebagai tipe data 'NUMBER' dan menginisialisasinya dengan nilai '5.'
- Baris kode 4: Mendeklarasikan variabel 'arth_operation' sebagai tipe data 'VARCHAR2' berukuran 20 dan menginisialisasinya dengan nilai 'MULTIPLY'.
- Baris kode 6: Mencetak pernyataan "Program dimulai".
- Baris kode 7: CASE memeriksa nilai ekspresi. Dalam hal ini, nilai variabel 'arth_operation' adalah 'MULTIPLY'. Nilai ini sekarang akan diperlakukan sebagai pemilih untuk pernyataan CASE ini.
- Baris kode 10: Klausa WHEN dengan nilai 'MULTIPLY' cocok dengan nilai selector, maka controller akan memilih action_block ini dan akan mencetak pesan 'Multiplication of the numbers are: 275'.
- Baris kode13: Menandai akhir dari pernyataan CASE.
- Baris kode14: Mencetak pernyataan "Program selesai".
Keluaran Kode:
Program started.Multiplication of the numbers are: 275Program completed.
Pernyataan SEARCHED CASE
Pernyataan SEARCHED CASE mirip dengan pernyataan CASE, daripada menggunakan selektor untuk memilih alternatif, SEARCHED CASE akan langsung memiliki ekspresi yang ditentukan di klausa WHEN.
- Klausa WHEN pertama yang memenuhi kondisi tersebut akan dijalankan, dan pengontrol akan melewatkan alternatif yang tersisa.
Sintaksis:
CASEWHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Dalam sintaks di atas, setiap klausa WHEN memiliki
dan yang terpisah. - Klausa WHEN yang hasilnya TRUE akan dieksekusi.
- Blok 'ELSE' adalah opsional yang menahan
yang perlu dijalankan ketika tidak ada alternatif yang memuaskan. - 'END' menandai akhir pernyataan CASE dan merupakan bagian wajib dari CASE.
Contoh 1: Perhitungan Aritmatika menggunakan Searched Case
Dalam contoh ini, kita akan melakukan perhitungan aritmatika antara dua angka 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 Kode:
- Baris kode 2: Mendeklarasikan variabel 'a' sebagai tipe data 'NUMBER' dan menginisialisasinya dengan nilai '55'.
- Baris kode 3: Mendeklarasikan variabel 'b' sebagai tipe data 'NOMOR' dan menginisialisasinya dengan nilai '5'.
- Baris kode 4: Mendeklarasikan variabel 'arth_operation' sebagai tipe data 'VARCHAR2' berukuran 20 dan menginisialisasinya dengan nilai 'DIVIDE.'
- Baris kode 6: Mencetak pernyataan "Program dimulai".
- Baris kode 7: Pernyataan KASUS SEARCHED dimulai. Kode dari baris 8 ke baris 13 dilewati karena nilai pemilihnya (TAMBAH, SUBTRAK, KALIAN) tidak cocok dengan nilai 'arth_operation'.
- Baris kode 14: Ekspresi klausa WHEN "arth_operation = 'DIVIDE'" terpenuhi dan ekspresi mengembalikan TRUE.
- Baris kode 15: Action_block dari klausa WHEN akan dijalankan, dan pesan 'Pembagian nomor adalah: 11' akan dicetak.
- Baris kode 17: Menandai akhir pernyataan CASE.
- Baris kode 18: Mencetak pernyataan "Program selesai".
Keluaran Kode:
Program started.Division of the numbers are: 11Program completed.
Ringkasan
TIPE | DESKRIPSI | PEMAKAIAN |
---|---|---|
KASUS |
Mirip dengan pernyataan IF-THEN-ELSIF. Sebuah 'SELECTOR' digunakan untuk memilih alternatif selain ekspresi Boolean. |
Digunakan untuk memilih dari beberapa alternatif menggunakan 'SELECTOR' |
KASUS PENELUSURAN |
Pernyataan CASE tanpa 'SELECTOR' yang sebenarnya. Sebaliknya, ini berisi kondisi aktual (yang dievaluasi ke TRUE / FALSE) yang akan memilih alternatif. |
Biasanya memilih dari lebih dari dua alternatif. |