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