Plsql Case When Kullanimi-Decode


PLSQL CASE WHEN KULLANIMI-DECODE vs CASE WHEN

Case when yapısı programlamadaki IF-THEN-ELSE yapısına benzer.Koşulumuza göre istediğimiz sonucu üretebiliriz.Case when yapısı hem plsql block içinde hem de select statement içinde kullanılabilir, bu yüzden Decode a göre daha çok kullanılan bir şart yapısıdır.Decode ile Case when yapısını select  statement içinde sağlayabiliriz.Ama maalesef plsql block içinde Decode kullanamıyoruz.

Aşağıda hem plsql block içinde kullanımı, hem select statement içinde kullanımına dair örnekler yapmaya
çalıştım..

PLSQL block içinde case kullanimi

DECLARE
  yasiniz  NUMBER:=UPPER('&YasiniziGiriniz');
  durumunuz  VARCHAR2(100);
BEGIN
  durumunuz  := CASE 
                     WHEN yasiniz<=25 THEN 'Gencsin Daha! :) '
                     WHEN 21<=yasiniz AND yasiniz<=34 THEN 'En Guzel Yaslar..'
                     WHEN 35<=yasiniz AND yasiniz<=60 THEN 'Yaslaniosun..'
                     ELSE 'Az Kalmis.. :('  
                END;       
  DBMS_OUTPUT.PUT_LINE('Yasiniz: '||yasiniz||'    Degerlendirmeniz: ' || durumunuz);
END;
/

Select içinde Case When Kullanimi

SELECT e.OWNER,e.TABLE_NAME,
  CASE e.OWNER 
       WHEN 'SYS' THEN 'Owner is SYS..'
       WHEN 'SYSTEM' THEN 'Owner is SYSTEM..'
       WHEN 'SYSMAN' THEN 'Owner is SYSMAN..'
       ELSE 'Owner is other'
  END owner
FROM All_Tables e;

Decode ile Case When yapısı

SELECT e.OWNER,e.TABLE_NAME,
  DECODE(e.OWNER,
         'SYS','Owner is SYS',
         'SYSTEM','Owner is SYSTEM',
         'SYSMAN','Owner is SYSMAN',
         'Owner is other') table_owner
FROM All_Tables e;

Case içinde Like Kullanımı

SELECT e.OWNER,e.TABLE_NAME,
  CASE  
       WHEN e.OWNER LIKE 'SYS%' THEN 'Owner is SYS or SYSTEM or SYSMAN'
       WHEN e.OWNER LIKE '%APPUSER%' THEN 'Owner is Application User..'
       ELSE 'Owner is other..'
  END owner
FROM All_Tables e;

Notlar:
Case when hem plsql BLOCK içerisinde hem de select statement içinde kullanılabilir.
Case when decode a göre daha performanslı çalışır.
Decode sadece select statement içerisinde kullanılabilir.
Decode ile büyük küçük karşılaştırmaları yapamayız.
Case when yapısı ile LIKE,IN,NOT IN, <, > ,= operatörlerini kullanabiliriz,
Decode ile sadece eşitse şart kontrol edilir.Bu yüzden CASE WHEN daha esnek bir yapıya sahiptir.

Tagged: , , , , , ,

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir