Arşiv

Archive for Ocak, 2011

pardus 2011

Merhaba,
Bugün Pardus 2011 için büyük gün .Çünkü en güncel ve yeni sürüm olan 2011 versiyonu yayınlanacak.Yeni sürümle ilgili indirme linki ve güncel haberler için bu linkten konuyu takip edebilirsiniz.

Pardus hakkında daha fazla bilgi için Özgürlük için adresini takip edin.

Özgürlük İçin... Pardus...
Özgürlük için Pardus...

wordpress sourcecode bilgileri

Merhaba,
Yayınlanmış olan yazırlarımda paylaştığım kod scriptlerinin daha düzenli ve anlaşılır görünmesi için wordpress in source code bilgilerini kullanıyorum. Bu source code bilgileri sayesinde eklemiş olduğun kod parçaları daha net ve anlaşılır olmaktadır.

Sizde yazdığınız yazılarınızda eklemiş olduğunuz kod parçalarının daha okunur ve anlaşılır olmasını istiyorsanız wordpress source code bilgilerini kullanabilirsiniz.
Örnek kullanım

[sourcecode language="sourcecode bilgisi"]
bu aralığa istediğiniz dildeki kod parçalarını ya da text verileri yazabilirsiniz.
[/sourcecode]

sourcecode bilgileri aşağıdadır.

actionscript3 bash coldfusion
cpp csharp css
delphi erlang fsharp
diff groovy javascript
java javafx matlab (keywords only)
objc perl php
text powershell python
r ruby scala
sql vb xml

Kullanım hakkında daha detaylı bilgiyi wordpress source code adresinden öğrenebilirsiniz.
Kolay gelisn.

pl/sql de sqlerrm kullanımı

Merhaba,
Pl/sql ortamında ya da Oracle forms ortamında yazdığımız programlarda çoğu zaman Oracle hatası alırız. Doğru bir hata yönetimimiz olmaz ise yani exception satırlarımızda yeterli bilgilendirme yapmaz isek bu hataları bulmak bazı durumlarda çok zor olabilir. Bu gibi durumlarda hatanın meydana geldiği scripti ve hatanın ne olduğu konusundaki detaylı bilgiyi Oracle’ın SQLERRM komutu ile rahatça öğrenebiliriz.Tabi bu durumu daha net anlamak için örneklerimize bir göz atalım.
Örnek olarak bir tabloya insert işlemi yapalım ve bu insert işlemi sırasında alabileceğimiz hataları SQLERRM kullanmadan görelim. Daha sonraki örneğimizde de SQLERRM komutu ile gelen uyarı/hata mesajını inceleyelim.
Aşağıdaki örneğimizde kullandığımız tablonun id bilgisi not null bir alan ve bu alana null veri kayıt etmeye çalıştığımızda scriptin exception satırına düşeceğiz.

DECLARE
BEGIN
  BEGIN
    INSERT INTO sqlerrm_example_table
      (set_id,
       set_aciklama)
    VALUES
      (NULL,
       'SQLERRM Kullanılmayan Insert');
  EXCEPTION
    WHEN OTHERS THEN
      dbms_output.put_line('Kayıt İşleminde Bir Hata Oldu');
  END;
END;

Script içerisinde görüldüğü gibi exception satırından bize aşağıdaki uyarı gelecektir.
Kayıt İşleminde Bir Hata Oldu

Ama bu script yerine aşağıdaki gibi SQLERRM komutunu kullandığımız scriptler hazırladığımızda hatayı bulmamız ve hastanın sebebini öğrenmemiz daha kolay olur.
DECLARE
BEGIN
  BEGIN
    INSERT INTO sqlerrm_example_table
      (set_id,
       set_aciklama)
    VALUES
      (NULL,
       'SQLERRM Kullanılan Insert');
  EXCEPTION
    WHEN OTHERS THEN
      dbms_output.put_line('Kayıt İşleminde Bir Hata Oldu' || chr(13) || SQLERRM);
  END;
END;

Mevcut scriptimizi yukarıdaki gibi güncellediğimizde ise aşağıdaki gibi daha sağlıklı ve hata hakkında daha fazla bilgi veren bir mesaj elde etmiş oluruz.
Kayıt İşleminde Bir Hata Oldu
ORA-01400: ("SQLERRM_EXAMPLE_TABLE"."SET_ID") içine NULL eklenemez

Bu uyarıyı aldığımız zaman insert satırımızdaki NULL olarak gönderdiğimiz id bilgisine değer verdiğimizde sorunsuz kayıt işlemimizi yapabiliriz.
DECLARE
BEGIN
  BEGIN
    INSERT INTO sqlerrm_example_table
      (set_id,
       set_aciklama)
    VALUES
      (1,
       'SQLERRM ve Id Bilgisi Kullanılan Insert');
  EXCEPTION
    WHEN OTHERS THEN
      dbms_output.put_line('Kayıt İşleminde Bir Hata Oldu' || chr(13) || SQLERRM);
  END;
END;

Bu script ile sorunsuz olarak kayıt işlemimi yaptığımıza göre tabloya select atıp kayıt sonucumuzu görebiliriz.
SELECT * FROM sqlerrm_example_table;

İşte bu select sonucunda sorunsuz olarak tabloya kayıt ettiğimiz veri karşımızda.

SET_ID SET_ACIKLAMA
1 SQLERRM ve Id Bilgisi Kullanılan Insert

Bu örneğimizde sadece insert işlemi üzerinde SQLERRM komutunu kullandık. Bu komut yazmış olduğumuz tüm scriptlerimiz için kullanılabilinir. Select , update , insert işlemlerinde de SQLERRM komutu rahatlıkla kullanılabilinir.
Kolay gelsin.

pl/sql de blob saha içeriğini görüntülemek

Merhaba,
Pl/sql ortamında hazırladığımız programlar için kullandığımız tablolar içinde blob alanlarda sakladığımız verileri yazdığımız normal bir select cümle ile ulaşamayız. Yani blob saha içindeki veriyi göremeyiz. Bu verileri görmek için blob türündeki verilerin içeriğini görmek için bu bilgileri convert etmemiz gerekmektedir. Şimdi blob sahası olan bir tablodan select çekerek sonuçlarını görelim.

SELECT bt_id       "Blob Id Bilgisi",
       bt_aciklama "Blob Açıklama Bilgisi",
       bt_blob     "Blob Saha"
  FROM blob_table;

Bu sql sonucunda aldığımız sonuç aşağıdaki gibi olacaktır.

Blob Id Bilgisi Blob Açıklama Bilgisi Blob Saha
1 Blob bilgisi açıklama alanı <BLOB>

Alınan sql sonucunda görüldüğü gibi blob alan içeriğini göremiyoruz. Bu durumda blob saha bilgisini convert işlemi yapılmadığından sql içinde into ataması ile blob saha değerini de kullanamıyoruz. Ama bu sorunlardan kurtulmak için dbms_lob paketi içindeki substr fonksiyonu ile blob saha içindeki verilerden kaç karakter veri alacağımızı belirttikten sonra , bu fonksiyonun dönüş değeri raw tipinde veri olduğu için bu verinin de varchar2 formatına dönüştürülmesi gerekiyor. Bu dönüşüm işlemi için de utl_raw paketi içindeki cast_to_varchar2 fonksiyonunu kullanacağız. Şimdi bu iki paket içindeki fonksiyonların kullanılarak üst taraftaki sql sonucunun blob saha içindeki değerini görelim.

SELECT bt_id "Blob Id Bilgisi",
       bt_aciklama "Blob Açıklama Bilgisi",
       bt_blob "Blob Saha",
       utl_raw.cast_to_varchar2(dbms_lob.substr(bt_blob, 32000, 1)) "Blob Saha İçeriği"
  FROM blob_table;

Yukarıda sql içerisinde de görüldüğü gibi iki paketin ve bu paketlerin içindeki fonksiyonların kullanımı görülmektedir. Bu sql sorgusunun çıktısı da aşağıdaki gibidir.

Blob Id Bilgisi Blob Açıklama Bilgisi Blob Saha Blob Saha İçeriği
1 Blob bilgisi açıklama alanı <BLOB> Deneme BLOB bilgisi.Bu bilgiyi okumak için dbms_lob paketi içindeki substr[dbms_lob.substr] fonksiyonunu ve utl_raw paketi içindeki cast_to_varchar2[utl_raw.cast_to_varchar2] fonksiyonunu kullanacağız.

Yukarıdaki sql sonucunda da görüldüğü gibi blob sahanın convert işlemini yapılmadan önceki hali ve convert işleminden sonraki durumu görülebilinir.
Kolay gelsin.

pl/sql de rowtype kullanımı ile update işlemi yapmak.

Merhaba,
Daha önceki yazımda pl/sql de rowtype kullanımı hakkında bilgi vermiştim. Önceki yazımda rowtype yapısı ile bir tabloya kayıt ekleme yani insert işleminden bahsetmiştim. Bu bilgilere ilave olarak bir tablodaki verileri güncellemek yani update etmek içinde rowtype yapısını kullanabiliriz. Bu işlemlerin örnekleri için daha önce hazırlamış olduğum tablodan yardım alalım. Bu tablodaki veri ya da verileri hem geleneksel yöntem ile update hem de rowtype yöntemi ile update işlemini yapalım ve aradaki farkı ve kullanım kolaylığını anlayalım.
Öncelikle tablomuzdaki kayıtlara bir göz atalım.

SELECT * FROM rowtype_table;

RT_ID RT_NAME RT_DATE
1 Rowtype kullanılmadan yapılan insert 23.06.2011 08:30:41
2 Rowtype kullanılarak yapılan insert 23.06.2011 08:32:58
3 Rowtype kullanılmadan yapılan update 06.01.2011 11:55:46
4 Rowtype kullanılarak yapılan update 06.01.2011 11:56:30

Tablomuzdaki kayıtlara bir göz attığımıza göre sıra geldi geleneksel update yöntemi ile update işlemi yapmaya.

DECLARE
BEGIN
  UPDATE rowtype_table
     SET rt_id   = 33,
         rt_name = rt_name || ' geleneksel update',
         rt_date = SYSDATE
   WHERE rt_id = 3;
  COMMIT;
END;

Bu update işleminden sonra elde ettiğimiz kayıt aşağıdaki gibi oldu.

RT_ID RT_NAME RT_DATE
1 Rowtype kullanılmadan yapılan insert 23.06.2011 08:30:41
2 Rowtype kullanılarak yapılan insert 23.06.2011 08:32:58
33 Rowtype kullanılmadan yapılan update geleneksel update 06.01.2011 13:05:27
4 Rowtype kullanılarak yapılan update 06.01.2011 11:56:30

Şimdi sırada rowtype ile update işleminde. Bu işlem için kullanabileceğimiz basit bir örnek aşağıdadır.

DECLARE
  rt_table rowtype_table%ROWTYPE;
BEGIN
  rt_table.rt_id   := 44;
  rt_table.rt_name := 'Rowtype kullanılarak yapılan update rowtype update';
  rt_table.rt_date := SYSDATE;

  UPDATE rowtype_table SET ROW = rt_table WHERE rt_id = 4;
  COMMIT;
END;

Rowtype update işlemimizden sonra tablomuzun son hali aşağıdaki gibi olacaktır.

RT_ID RT_NAME RT_DATE
1 Rowtype kullanılmadan yapılan insert 23.06.2011 08:30:41
2 Rowtype kullanılarak yapılan insert 23.06.2011 08:32:58
33 Rowtype kullanılmadan yapılan update geleneksel update 06.01.2011 13:05:27
44 Rowtype kullanılarak yapılan update rowtype update 06.01.2011 13:12:50

Yaptığımız her iki update işleminde sorunsuz olarak istediğimiz verileri değiştirebiliyoruz. Bu durumda geleneksel yöntem yerine rowtype kullanımının bize kazandırdığı kolaylık sorusu aklımıza gelebilir. Bu sorunun cevabı yaptığımız örnekteki tablo gibi az sayıda kolunu olan tabloların update işlemlerinde değil , büyük tablolarda çok fazla sayıda kolon update işlemi yapacağımız zaman kod okunurluğu ve takibi konusunda bize sağladığı kolaylık olacaktır.

Kolay gelsin.

Takip Et

Get every new post delivered to your Inbox.

Join 62 other followers