Başlangıç > Database, Forms, Oracle, PL/SQL, Reports > pl/sql rowtype kullanımı örnek

pl/sql rowtype kullanımı örnek


Merhaba,

Pl/sql ortamında yapılan database işlemlerinde (function ,procedure,declare vb.) bazen insert işlemi yapmamız gerekiyor .Yapılacak olan insert işleminde kullanılan tablo sütun sayısı olarak fazla değer içermiyor ise sorun olmuyor fakat çok fazla sütuna sahip tablolara insert işlemi yapılacağı zaman değer atamalarında karışıklıklar yaşanmaktadır.Yaşanan bu karışıklıkları en aza indirmek için rowtype yapısı kullanılabilinir.Rowtype yapısı hem kullanımı kolay , hemde kayıt takibi açısından çok verimlidir.Aşağıda iki insert işlemi yapan declare bulunmaktadır.
Rowtype kullanılmadan yapılan insert işlemi.

DECLARE
  id_rt    NUMBER(12);
  hata_var NUMBER;
BEGIN

  hata_var := 0;

  BEGIN
    SELECT nvl(MAX(rt_id), 0) + 1 INTO id_rt FROM rowtype_table;
  EXCEPTION
    WHEN OTHERS THEN
      id_rt := 1;
  END;

  BEGIN
    INSERT INTO rowtype_table
      (rt_id,
       rt_name,
       rt_date)
    VALUES
      (id_rt,
       'Rowtype kullanılmadan yapılan insert',
       SYSDATE);
  EXCEPTION
    WHEN OTHERS THEN
      hata_var := 1;
      dbms_output.put_line('Insert işleminde hata oldu. !');
  END;

  IF nvl(hata_var, 0) = 0 THEN
    COMMIT;
  ELSE
    ROLLBACK;
  END IF;

END;

Bu insert işleminde kullanılan tablo sütun sayısı olarak fazla değer içermiyor fakat burada en az 40-50 sütün olduğunu düşünürsek bu yapıda kontrol bazen zorlaşıyor.Bu sorunun önüne geçmek için ise aşağıdaki gibi rowtype ile hazırlanan insert gibi insert scriptleri yazarak sorunumuzu giderebiliriz.
Rowtype kullanılarak hazırlanan insert işlemi.

DECLARE
  id_rt    NUMBER(12);
  hata_var NUMBER;
  rt_table rowtype_table%ROWTYPE;
BEGIN

  hata_var := 0;

  BEGIN
    SELECT nvl(MAX(rt_id), 0) + 1 INTO id_rt FROM rowtype_table;
  EXCEPTION
    WHEN OTHERS THEN
      id_rt := 1;
  END;

  rt_table.rt_id   := id_rt;
  rt_table.rt_name := 'Rowtype kullanılarak yapılan insert';
  rt_table.rt_date := SYSDATE;

  BEGIN
    INSERT INTO rowtype_table VALUES rt_table;
  EXCEPTION
    WHEN OTHERS THEN
      hata_var := 1;
      dbms_output.put_line('Insert işleminde hata oldu. !');
  END;

  IF nvl(hata_var, 0) = 0 THEN
    COMMIT;
  ELSE
    ROLLBACK;
  END IF;

END;

Burada kullanılan yapıda da görüleceği gibi rowtype yapısı ile insert işlemi yapacağımız tablonun istediğimiz sütununun değerini yazılan programın istenilen ve en uygun satırlarında müdahale edebiliriz.

Reklamlar
  1. Henüz yorum yapılmamış.
  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: