Oracle PL / SQL: Pernyataan KASUS dengan Contoh

Daftar Isi:

Anonim

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)WHEN  THEN 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:

CASEWHEN  THEN 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.