Respond needs javascript to run. To find out more click here
Oracle » Serdar Demir
RSS
 

Archive for the ‘Oracle’ Category

PL/SQL Built in functions

26 Oca

PLSQL Built in functions

Programlama dillerinde kütüphaneler hazır fonksiyonlar vardır bunları projenize ekleyerek butun fonksiyonlarını kullanabilirsiniz. Sql ile ugraşan herkes max(), avg(), min() ..gibi fonksiyonları mutlaka kullanmıştır. Oracle dakii butun built in function lara http://psoug.org/reference/builtin_functions.html adresinden ulaşabilirsiniz. Bunlardan en kullanışlı olanları ve benim en çok kullandıklarımı  anlatmaya çalışayım.
1-)to_date : Verilen bir stringi  tarih olarak tutar. Tarih oracle da gun ay yil saat dakika ve saniye olarak tutulur demiştik to_date ile tarih formatımızı belirleyebilirz.
select 1 from dual where to_date(’01.01.2010’,’dd.mm.yyyy’);
select 1 from dual where to_date(’2010.01.2010’,yyyy.mm.dd);
2-) Upper ve Lower : Stringdeki karakterleri büyütür veya küçültür ama oracle bu iki fonksiyonu ingilizce için yazdığından türkçede doğru çalışmaz.

Onun yerine tr package`ındaki fonksiyonlar kullanılmalı.
select upper(‘i’),lower(‘I’),TR.toupper(‘i’),tr.tolower(‘I’) from dual
Çıktısı ise : I    i    İ    ı
3-) decode : Kullanımı değişken,şuysa,bu,şuysa, bu …… ,default_değer) .net deki ? operatorune benzer if else mantıgıyla çalışır
select decode(:cinsiyet,1,’dogru’,0,’yanlış,’BİLİNMİYOR’) from dual
4-) substr Kullanımı  substr (string ,baslangıç ,kac_karakter)
Örnek: select substr(serdar,2,4) from dual
Çıktısı ise: erda
*.net tarfında substr işlemlerinde index 0 dan başlar oracle da ise 1 den başlar  yani 2. Karakter e ile  sonraki 4 karakter al

 
No Comments

Posted in Oracle

 

Oracle da tarih problemleri ve çözümleri

26 Oca

Oracle da tarih problemleri

Database üzerinde işlem yapanlar bilir tarih, dölge ve dil farklılıkları genellikle problem çıkartır. Öyle ki geçenlerde gördüğüm  bir durumu paylaşayım. Bir rapor yapıyorsunuz ve yaptıgınız rapor localinizde farklı başka bilgisayarlarda farklı sonuc veriyor . Bu gibi durmlarda hemen “Oracle bozuk, toad bozuk”  gibi bahanelere başvuruz ama oracle hata yapmaz. Raporun farklı cıkmasının sebebi ise  bölge farklılıklarından kaynaklanıyor  . Localinizdeki ayarlar TR raporu kullanan başka bilgisayarın bölge ayarları diyelimki ABD. Ek bir bilgi olarak biz oracle a tarihi gun , ay yıl olarak versek bile o kendi içerisinde bunu  gun ay yil saat dakika ve saniye olarak ( 01.01.2010 00:00:00) tutar. Peki bu problemı nasıl çözeriz.
O an aktif session ın terriory (bölge) ayarlarını değiştirmek problemımızı çözecektir. Ama dikkatli olmalıyız işimiz bittikten sonra eski territory bilgilerini geri yuklemeliyiz
–suanki bolge bilgisini bir değişkende saklıyoruz
SELECT PRM.VALUE INTO TEMP FROM NLS_SESSION_PARAMETERS PRM WHERE PRM.PARAMETER = ‘NLS_TERRITORY’;
–sessionın terrritorysini TURKEY olarak ayarlıyoruz
execute immediate ‘alter session set NLS_TERRITORY=”TURKEY”’;

–eski  bolge bilgisini bir geri yukluyoruz
execute immediate ‘alter session set NLS_TERRITORY= ‘||TEMP;

**Bölge bilgisini tekrar geri yüklemeliyiz şöyle bir durumuda goz onunde bulundurmak gerekir birşey oldu ve sorgumuz bir exception fırlattı be bizim komutumuz tamamlanmadı. Bu durumda da kodumuzu exception kısmınada ekliyoruz
Exception
When No_Data_Found Then
execute immediate ‘alter session set NLS_TERRITORY= ‘||TEMP;

 
No Comments

Posted in Oracle