PLSQL Case Kullanımı | Oracle Case When Kullanımı

PLSQL CASE Kullanımı | Oracle Case When Kullanımı

PLSQL Case Kullanımı veya Oracle SQL Case kullanımı ,ORACLE SQL sorgularında ve PLSQL Begin-End Kod bloğunda bize if-else yapısını sağlar. SQL sorgularında kolaylıkla “eğer bu ise sonuç bu” şeklinde verileri getirebilme imkanını bize verir.

Oracle Case when yapısının 2 kullanımı vardır.

PLSQL Case Kullanımı Syntaxı:

searched case ifadesi ::=

CASE { WHEN true_veya_false_deger_donduren_kosul_ifadesi THEN {sonuc} ... }...
[ ELSE {sonuc}... ]
END CASE [ bu_sonucun_kolon_ismi ];

basit case ifadesi ::=

CASE sorgulanacak_deger
{ WHEN eger_buysa THEN {sonuc} ... }...
[ ELSE {sonuc;}... ]
END CASE [ bu_sonucun_kolon_ismi];

Oracle case kullanımı syntaxlarına dikkat edersek, basit case ifadesi  “case” ifadesinden sonra bir sorgulanacak değer arar.

Sonrasında sorgulanacak değer hakkında kararlar alır.

Eğer böyleyse sonuç bu olsun, eğer böyleyse sonuç bu olsun, eğer hiçbiri değilse sonuç bu olsun şeklinde bir yorum yapar.

Diğer bir syntax ise searced case yapısıdır.

 

PLSQL Case Kullanımı – Basit Case

Yukarıda belirttiğimiz syntaxta basit_case ifadesi örneğimizi görelim.

 

select case sign(to_date('19.02.2018', 'dd.mm.yyyy') -
to_date(sysdate, 'dd.mm.yyyy')) when
0 then
'Doğum günün kutlu olsun bro'
when 1 then
'doğum gününe daha varmış'
when -1 then
'senin doğum günün geçmiş boolum' else 'yanlış giden birşeyler var' end
from dual;

 

Peki Oracle case when kullanımının PL-SQL decode Kullanımından farkı nedir diye sorarsak,Oracle Case when içerisinde içerisinde sql ifadelerini kullanabiliyor olmamız. Yani;

 

select case 'reisahmet'
when
like '%ahmet' then 'sultanahmet'
when 
like '%samet' then 'sultansamet'
else 'hiçbirşey' end "İlçesi" from dual;

 

Bu ifadede kullandığımız gibi decode ifadesini kullanamıyoruz. Çünkü decode ifadesi içerisinde “Like” , “in”  , “all” gibi sql ifadelerini kullanamayız.

Decode ifadeleri ancak kıyaslanan değer eşit ise işimizi kolaylaştırırlar.

Case When yapısı Decode fonksiyonundan daha performanslı çalışır. Zaten daha düzenli gözüktüğü için kendisi benim vazgeçilmezimdir 🙂 Ancak bazı durumlarda decode daha kullanışlı gözükebilir. Çekinmeden kullanabilirsiniz.

SQL ifadelerini içerebilmesi ile de karşılaştırma büyük küçük analizi veya içinde mi değil mi gibi koşulları PLSQL case when yapısı içerisinde kullanabiliyoruz.

Ancak bunu decode işlemi ile yapmak mümkün değil.

PLSQL Case Kullanımı – Searched Case

Oracle SQL case kullanımının farklı bir örneğini yapacağız şimdi.

Yukarıdaki örnekte sign fonksiyonunun bize döndürdüğü değerin “0” mı ,”1″ mi, “-1” mi olduğunu inceledik ve sonuçlarımızı ona göre gösterdik.

Tek bir case içerisinde birden çok değeri sınayabilir miyiz bunu görelim.

 

select CASE 
WHEN substr(c.maliyet_turu,0,1) ='D' and
 substr(c.maliyet_turu,0,1)='A' THEN 'SGK VE MALİ HİZMETLER'
WHEN substr(c.maliyet_turu,0,1) in ('B','A')  THEN ' İŞÇİLİKLER' 
else 'turu_belli_degil' end  from bir_tablo;

Dikkat ederseniz sınanacak işlemi “select  ile “case” ifadelerinin arasına yazmadım. Yani searched_case ifadesini kullandım. “when” ifadesinden sonra her bir eşitliği tek tek sınadım. İşte bu case türü de, bize, bu şekilde sql sorgu kodlarımızda if-else-then yapısını kullanma fırsatı sunuyor.

PLSQL case kullanımı başlıklı yazımın sonuna geldik. Daha iyi yazılarda görüşmek dileğiyle 🙂

 

Case when yapısı için dış kaynak

 

PLSQL case kullanımı, Oracle case when
PLSQL case kullanımı, Oracle case when