Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Pernyataan Kasus Oracle Dijelaskan dengan Tip dan Contoh

Kami telah melihat cara kerja pemrosesan Oracle Decode di posting sebelumnya

Pemrosesan dekode sql Oracle

Sekarang mari kita lihat pemrosesan pernyataan Oracle Case

Pernyataan kasus di Oracle

Hal ini mirip dengan pernyataan Decode. Database sebelum Oracle 8.1.6 hanya memiliki fungsi DECODE. CASE diperkenalkan di Oracle 8.1.6 sebagai fungsi standar, lebih bermakna, dan lebih kuat.

Semua yang DECODE bisa lakukan, CASE juga bisa. Ada banyak hal lain yang bisa dilakukan CASE, yang tidak bisa dilakukan DECODE. Kami akan membahas contoh mendetail dalam artikel ini

Mari kita mulai dengan Sintaks pernyataan Kasus

CASE [expression]

when condition_1 then value_1
when condition_2 then value_2
when condition_2 then value_2
….

else value_n
end

ekspresi adalah opsional

Kita dapat membagi pernyataan Kasus menjadi dua kategori Pernyataan Kasus Sederhana dan Pernyataan Kasus yang Dapat Dicari

Pernyataan kasus sederhana seperti fungsi Decode.

Contoh dengan pernyataan KASUS Sederhana

select
case
region
when ‘N’ then ’North’
when ‘S’ then ’South’
when ‘E’ then ’East’,
when ‘W’ then ’West’
else ‘UNKNOWN’
end
from
customer;

Pernyataan Kasus yang Dapat Dicari adalah pernyataan kasus di mana kita menentukan suatu kondisi atau predikat (pernyataan kasus dalam oracle dengan beberapa kondisi)

SQL> select emp_name
, case
when Salary < 10000
then 'Junior Level'
when (Salary >=10000 and Salary < 50000)
then 'Middle Level'
when (Salary >= 50000 and Salary < 100000)
then 'Senior Level'
else 'Managers'
end Emp_level
from employee_info
where rownum < 5;

EMP_NAME EMP_LEVEL
---------- ---------
JOHN Junior Level
DON Senior Level
BOB Manager
BILL Middle Level

Pernyataan Kasus Oracle Bersarang

Ini adalah pernyataan kasus dalam pernyataan kasus

SQL> select emp_name
, case
when Salary < 10000
then 'Junior Level'
when (Salary >=10000 and Salary < 50000)
then 'Middle Level'
when (Salary >= 50000 and Salary < 100000)
then 'Senior Level'
else  (Case when grade ='20'  then 'Vice President'
when grade='21'  then 'Senior Vice President'
else 'Manager'
End)
end Emp_level
from employee_info
where rownum < 5;

Poin penting tentang pernyataan Kasus Sederhana dan dapat ditelusuri

(1) KASUS yang dicari mengevaluasi kondisi secara independen di bawah masing-masing opsi "kapan". Dengan struktur ini, kondisi yang jauh lebih kompleks dapat diimplementasikan dengan CASE yang dicari daripada CASE sederhana.

(2) CASE yang dicari dapat menggabungkan beberapa pengujian menggunakan beberapa kolom, perbandingan, dan operator DAN/ATAU.

(3) Baik konstruksi CASE sederhana maupun yang dicari, kondisi dievaluasi secara berurutan dari atas ke bawah, dan eksekusi keluar setelah kecocokan pertama ditemukan. Jadi, misalkan lebih dari satu kondisi benar, hanya tindakan pertama yang dipertimbangkan.

(4) Oracle Database menggunakan evaluasi hubung singkat. Artinya, untuk ekspresi CASE sederhana, database mengevaluasi setiap nilai comparasi_expr hanya sebelum membandingkannya dengan expr, daripada mengevaluasi semua nilai perbandingan_expr sebelum membandingkannya dengan expr. Akibatnya, Oracle tidak pernah mengevaluasi perbandingan_expr jika perbandingan_expr sebelumnya sama dengan expr. Untuk ekspresi CASE yang dicari, database mengevaluasi setiap kondisi untuk menentukan apakah itu benar, dan tidak pernah mengevaluasi suatu kondisi jika kondisi sebelumnya benar

Sekarang mari kita lihat perbedaan antara pernyataan Kasus dan Dekode

(1) DECODE hanya dapat bekerja dengan nilai skalar tetapi CASE dapat bekerja dengan operator logika, predikat, dan subkueri yang dapat ditelusuri.

Kita tahu bahwa decode dapat bekerja dengan nilai skalar. Kami tidak dapat menggunakannya untuk operator Logika. Kita harus mengubahnya menjadi nilai skalar untuk memanfaatkannya.

Kasus membuat seluruh proses lebih mudah. Kita dapat dengan mudah menggunakan operator logika dalam pernyataan Kasus

SQL> select city
, case
when population < 100000
then 'Tier I'
when (population >=100000 and population < 200000)
then 'Tier II'
when (population >= 200000 and population < 300000)
then 'Tier III'
else 'TIER IV'
end City_Tier
from city_info
where rownum < 5;

CITY CITY_TIER
---------- ---------
XYX TIER I
XYZ TIER II
XZW TIER II

Di atas disebut pernyataan Kasus yang dapat ditelusuri

(2) CASE dapat bekerja sebagai konstruksi PL/SQL tetapi DECODE hanya digunakan dalam pernyataan SQL. CASE dapat digunakan sebagai parameter fungsi/prosedur.

Contoh

DECLARE

V_x VARCHAR2(10) := 'A';
V_y VARCHAR2(10);

BEGIN

V_y := CASE V_x
WHEN 'A' THEN 'Excellent'
WHEN 'B' THEN 'Good'
WHEN 'C' Then 'Average'
ELSE 'Poor'
END;

DBMS_OUTPUT.PUT_LINE(
'Grade V_x is '||V_y||'.'
);

END;
/

Grade V_x Sangat Bagus.

(3) CASE mengharapkan konsistensi tipe data, DECODE tidak.

select case 5 when 1 then '1'
2 when '2' then '2'
3 else '5'
4 end
5 from dual;
when '2' then '2'
*
ERROR at line 2:
ORA-00932: inconsistent datatypes: expected NUMBER got CHAR

(4) CASE sesuai dengan ANSI SQL. DECODE adalah milik Oracle.

(5) CASE dieksekusi lebih cepat di pengoptimal daripada DECODE.

(6) CASE adalah pernyataan sedangkan DECODE adalah fungsi.

Artikel Terkait
Tutorial Oracle sql :Daftar semua pelajaran tutorial sql yang dapat digunakan untuk menguasai sql dan digunakan dalam manajemen dan manipulasi data RDBMS (Oracle,MySql)
Pertanyaan wawancara Oracle:Lihat halaman ini untuk 49 Teratas Oracle Wawancara pertanyaan dan jawaban:Dasar-dasar, Oracle SQL untuk membantu Anda dalam wawancara.
oracle PLSQL record:Lihat artikel ini tentang cara kerja oracle PLSQL record. Juga, temukan berbagai cara untuk mendefinisikannya dan memberikan nilai padanya
Alat pengembang Oracle SQL:Lihat halaman ini untuk semua informasi tentang alat pengembang Oracle sql,Cara melakukan unduhan pengembang Oracle sql, cara menginstal
fungsi tanggal Oracle :Lihat posting ini untuk fungsi tanggal Oracle, perbedaan tanggal Oracle dalam tahun, perbedaan tanggal Oracle dalam hari, perbedaan tanggal Oracle dalam bulan.
https://docs.Oracle.com/cd /B19306_01/server.102/b14200/expressions004.htm

Kursus yang Direkomendasikan

Berikut adalah Kursus Udemy yang bagus untuk Oracle SQL
Oracle-Sql-Step-by-step :Kursus ini mencakup sql dasar, bergabung, Membuat Tabel dan memodifikasi strukturnya, Membuat Tampilan, Union, Union -semua dan banyak hal lainnya . Kursus yang bagus dan kursus yang harus dimiliki untuk pemula SQL
Kursus Sertifikasi Oracle SQL Lengkap :Ini adalah kursus yang bagus untuk siapa saja yang ingin siap kerja untuk keterampilan pengembang SQL. Kursus yang dijelaskan dengan baik
Pengembang Oracle SQL:Esensi, Kiat, dan Trik :Alat pengembang Oracle Sql sedang digunakan oleh banyak pengembang. Kursus ini memberi kita trik dan pelajaran tentang cara menggunakannya secara efektif dan menjadi pengembang sql yang produktif
Oracle SQL Performance Tuning Masterclass 2020 :Penyetelan kinerja adalah salah satu keterampilan yang penting dan paling dicari. Ini adalah kursus yang bagus untuk mempelajarinya dan mulai melakukan penyetelan kinerja sql


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membuat Database Oracle 12c – Langkah demi langkah

  2. Bagaimana Memuat File JAR di Oracle Database?

  3. Cara mengakses Oracle DB di VirtualBox dari Host (windows)

  4. Bagaimana cara mengakses database Oracle melalui jaringan?

  5. Fungsi Numerik di Oracle (Daftar Lengkap)