Tuesday, October 24, 2017

Pengantar  CASE Statement  PL / SQL


Pernyataan CASE  PL / SQL memungkinkan kamu untuk melakukan serangkaian pernyataan berdasarkan pemilih. Seorang pemilih dapat berupa sesuatu seperti variabel, fungsi, atau ekspresi yang ditunjukkan oleh pernyataan CASE terhadap nilai Boolean.

kamu dapat menggunakan hampir semua jenis data PL / SQL sebagai pemilih kecuali tipe BLOB, BFILE dan komposit.

Berbeda dengan pernyataan PL / SQL IF, pernyataan CASE PL / SQL menggunakan pemilih daripada menggunakan kombinasi beberapa ekspresi Boolean.

Berikut ini menggambarkan sintaks pernyataan PL / SQL CASE:

[<<label_name>>]
CASE [TRUE | selector]
   WHEN expression1 THEN
    sequence_of_statements1;
   WHEN expression2 THEN
    sequence_of_statements2;
   ...
   WHEN expressionN THEN
    sequence_of_statementsN;
  [ELSE sequence_of_statementsN+1;]
END CASE [label_name];

Diikuti dengan kata kunci CASE adalah selector. Pernyataan CASE  PL / SQL mengevaluasi pemilih hanya sekali untuk menentukan urutan pernyataan yang akan dijalankan.

Diikuti oleh pemilih adalah sejumlah klausa WHEN. Jika nilai pemilih sama dengan expression dalam klausa WHEN, urutan pernyataan yang sesuai setelah kata kunci THEN dijalankan.

Jika nilai pemilih bukan salah satu pilihan yang tercakup dalam klausa WHEN, urutan pernyataan dalam klausa ELSE akan dieksekusi. Klausa ELSE bersifat opsional jadi jika kamu menghilangkannya. PL / SQL akan menambahkan klausa ELSE implisit berikut ini:

ELSE RAISE CASE_NOT_FOUND;
Jika kamu menggunakan klausa ELSE implisit dalam pernyataan CASE PL / SQL, pengecualian CASE_NOT_FOUND dinaikkan dan dapat ditangani di bagian penanganan pengecualian blok PL / SQL seperti biasa.

Klausa END CASE digunakan untuk mengakhiri pernyataan CASE.

Contoh Menggunakan Pernyataan CASE PL / SQL

Contoh berikut menunjukkan pernyataan CASE PL / SQL. Kami akan menggunakan tabel karyawan dalam data sampel SDM yang disediakan oleh Oracle untuk demonstrasi. 

SET SERVEROUTPUT ON SIZE 1000000;
DECLARE
  n_pct    employees.commission_pct%TYPE;
  v_eval   varchar2(10);
  n_emp_id employees.employee_id%TYPE := 145;
BEGIN
  -- get commission percentage
  SELECT commission_pct
  INTO n_pct
  FROM employees
  WHERE employee_id = n_emp_id;

  -- evalutate commission percentage
  CASE n_pct
    WHEN 0 THEN
      v_eval := 'N/A';
    WHEN 0.1 THEN
      v_eval := 'Low';
    WHEN 0.4 THEN
      v_eval := 'High';
    ELSE
      v_eval := 'Fair';
  END CASE;
  -- print commission evaluation
  DBMS_OUTPUT.PUT_LINE('Employee ' || n_emp_id ||
                       ' commission ' || TO_CHAR(n_pct) ||
                       ' which is '   || v_eval);
END;
/



PL / SQL searched CASE statement

PL / SQL memberikan pernyataan KASUS khusus yang disebut digeledah pernyataan CASE. Sintaks dari pernyataan CASE PL / SQL yang dicari adalah sebagai berikut:

[<<label_name>>]
CASE
   WHEN search_condition_1 THEN sequence_of_statements_1;
   WHEN search_condition_2 THEN sequence_of_statements_2;
   ...
   WHEN search_condition_N THEN sequence_of_statements_N;
  [ELSE sequence_of_statements_N+1;]
END CASE [label_name];


Laporan CASE yang dicari tidak memiliki pemilih. Setiap klausa WHEN dalam laporan CASE yang dicari berisi kondisi pencarian yang mengembalikan nilai Boolean.


Kondisi pencarian dievaluasi secara berurutan dari atas ke bawah. Jika kondisi pencarian dievaluasi ke TRUE, urutan pernyataan dalam klausa WHEN yang sesuai dijalankan dan kontrol dilewatkan ke pernyataan berikutnya, oleh karena itu, kondisi pencarian berikutnya diabaikan.


Jika tidak ada kondisi pencarian yang dievaluasi ke TRUE, urutan pernyataan dalam klausa ELSE akan dieksekusi.


Berikut ini adalah contoh penggunaan pernyataan 


SET SERVEROUTPUT ON SIZE 1000000;
DECLARE
  n_salary EMPLOYEES.SALARY%TYPE;
  n_emp_id EMPLOYEES.EMPLOYEE_ID%TYPE := 200;
  v_msg    VARCHAR(20);
BEGIN
  SELECT salary
  INTO n_salary
  FROM employees
  WHERE employee_id = n_emp_id;

  CASE
    WHEN n_salary < 2000 THEN
      v_msg := 'Low';
    WHEN n_salary >= 2000 and n_salary <=3000 THEN
      v_msg := 'Fair';
    WHEN n_salary >= 3000 THEN
      v_msg := 'High';
  END CASE;
  DBMS_OUTPUT.PUT_LINE(v_msg);
END;
/


Dalam tutorial ini, Kita telah belajar bagaimana menggunakan pernyataan CASE PL / SQL dan mencari CASE untuk melakukan serangkaian pernyataan berdasarkan kondisi.





sumber asli : http://www.plsqltutorial.com/

0 comments:

Post a Comment

Popular Posts