Uefa Maçları Canlı İzle
RSS
 

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

 

Tags:

Leave a Reply