26 Nisan 2008 Cumartesi

CLOB alana boş string değeri atamada sorun

Oracle 10g R2 (10.2.0.3.0) kullanıyorum. Veritabanına .NET Framework 2.0 üzerinden (System.Data.OracleClient) erişiyorum.

Uzunluğu belirtilmemiş CLOB tipinde bir alana boş string (zero-length string) atamak istidiğimde "ORA-01084: OCI çağrısı içinde geçersiz bağımsız değişken" hatası oluştu.

Biraz kurcaladıktan sonra CLOB tipinde alanların boş string kabul etmediğini; ya NULL ya da en az bir karakterlik veri girilmesi gerektiğini öğrendim. PL/SQL Developer ve TOAD
üzerinden SQL cümlesi yazarak da denedim, .NET tarafından da denedim. Şöyle ki:

CREATE TABLE SCM.TEST
(
test_id INTEGER NOT NULL,
test_adi DATE,
test_aciklama VARCHAR2(150 BYTE),
clob_alan CLOB
);

Tabloyu oluşturduktan sonra aşağıdaki SQL cümlesini eklemeyi denedim:

INSERT INTO TEST VALUES(S_TEST.NEXTVAL,'test_adi degeri','test_aciklama degeri','');

Girdiğim satırın CLOB alanını kontrol ettiğimde boş string yerine NULL değerinin girilmiş olduğunu gördüm. IDE'ler, INSERT cümlesini oci.dll'ye yönlendirmeden önce CLOB alan için girilen boş string değerini NULL değerine çeviriyor. Biz bu çevrimi .NET tarafında yapmadığımız için sorun yaşadık. ORACLE'deki prosedüre parametreleri yollayan kod bloğunda gerekli düzenlemeyi yaptım ve sorun çözüldü.

DÜZELTME: Boş string (Zero-length string) IDE'ler tarafından NULL'a çevrilmiyor. Oracle'nin VARCHAR2 ve CLOB alanlardaki yorumlayış biçimi bu şekildeymiş. Tom Kyte'nin AskTom adlı sitesinde konuya açıklık getirilmiş. Ayrıntılar için tıklayınız.

17 Nisan 2008 Perşembe

ASP.NET üzerinden Microsoft Access veritabanına erişimde "Belirtilmemiş hata"

WEB uygulamanız üzerinden Access veritabanına ulaşmaya çalıştığınızda "System.Data.OleDb.OleDbException: Unspecified Error" ya da "System.Data.OleDb.OleDbException: Belirtilmemiş hata" şeklinde bir hata mesajı alıyorsanız, aşağıdaki bağlantılar işinize yarayacaktır:

http://msmvps.com/blogs/rakeshrajan/archive/2005/07/04/56461.aspx

http://support.microsoft.com/default.aspx?scid=kb;EN-US;825738

Anlaşıldı...Kurtulamayacağım bu işten.

Yazılım, hayatımızın bir parçası olmuş. Günde 16 saat çalışınca... :)

Meslekle alakalı kelam etmek zaruret haline geldi.