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

PL\SQL Built in functions

26 Oca

PL\SQL 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

 

C# generic tiplerde constraint kullanımı

06 Oca

C# generic tiplerde constraint kullanımı
Genericler .net 2.0 ile hayatımıza girdi. Şu aralar web projelerimde kullanmak için kendi altyapımı oluşturuyorum ve generic bir base class yapmam gerekiyor. Design patternlari inceledigim de hep complex code tipleri ile karşılaştım( zaten anlaması zor konular )

class Base { }
class Test
    where U : struct
    where T : Base, new() { }

Genericler bildigimiz gibi T türünden tanımlarsınız ve siz ne verirseniz onun türünden olurlar Yukarıdaki kod ilk bakışta complex geliyor alışık olmadığımız generic class yapıları var. Generic classlarda where kullanabiliyoruz peki bize ne faydası var bunun eğer classlarının oluşturulurken yani constructior lar çağırılırken diyelim ki bu T türü bir struct olmalı veya disposable, iquaryable olmalı gibi kısıtlamalar eklemek istenilebilir. Msdn de buldugum çeşitli constraintleri tablosu

Constraint Description
where T: struct The type argument must be a value type. Any value type except Nullable can be specified. See Using Nullable Types (C# Programming Guide) for more information.
where T : class The type argument must be a reference type, including any class, interface, delegate, or array type. (See note below.)
where T : new() The type argument must have a public parameterless constructor. When used in conjunction with other constraints, the new() constraint must be specified last.
where T : <base class name> The type argument must be or derive from the specified base class.
where T : <interface name> The type argument must be or implement the specified interface. Multiple interface constraints can be specified. The constraining interface can also be generic.
where T : U The type argument supplied for T must be or derive from the argument supplied for U. This is called a naked type constraint.

 

Bir örnek yapalım;

using System;
using System.Data;
using System.Runtime.Serialization;

class Listem where T : ISerializable
{
}
class MyStruct where T : struct
{
}
class Sinif where V : class, new()
{
}
class Test
{
}
class Program
{
    static void Main()
    {
        // T türüne karşılık gelen  ISerializable türünden implemente edilmiş olmak zorunda
        Listem _listem = new Listem();
        Listem() llll=new Listem();
        // Int türü struct türünde ve düzgün compile edecek
        MyStruct python = new MyStruct();
        //Parametresiz bir class olmalı
        Sinif test = new Sinif();
    }
}

Yukarıdaki kodda Listem generic sınıfı serialize edibilir olmalı diyorum eğer class a bu constrainti vermeseydik <int>verdigimizde de çalışacaktı fakat <int> Ienumarable bir tür ISerializable olmadıgı için aşağıdaki hatayı verdi.
2. Örnek te ise new oluşturlacak bu generic class bir struct olmalı diyorum
3. class ta ise yapılmak istenen aslında default constructior ile alakalı bir durum bildigimiz gibi biz yazmasakta .net default constructiori oluşturuyor. where V : class, new() diyerek T türü parametre almayacak bir class olmalı diyoruz.

 
No Comments

Posted in Asp.net, C#

 
Sayfa 1 - 23112345678910...100200...Son »