Başlangıç > Database, Forms, Oracle, PL/SQL, Reports > pl/sql de object kullanımı

pl/sql de object kullanımı


Merhaba
Daha önce size pl/sql type kullanımı örnek yazımda object kullanımı ile hazırladığımız bir type ile yazdığımız fonksiyonun table cast işlemi ile bir tablo gibi değerler döndürmesini anlatmıştım. Şimdi ise yine object kullanımı ile bir fonksiyon hazırlayacağız ama bu sefer table cast işlemi olmadan direk istediğimiz alana erişim ve birden fazla sütun olarak fonksiyon sonucumuzu alacağız. Bu örnek için fonksiyon içine göndereceğimiz tarih değerini bize sayısal, karakter ve tarih olarak geri dönecek bir bir yapı için bir object hazırlayalım ve fonksiyonumuzu yazalım.

create or replace type ExampleObject as object
(
  vNumber  number,
  vVarchar varchar2(100),
  vDate    date
)

Artık object hazır. Şimdi bu object ile kullanacak olduğumuz fonksiyonumuzu hazırlayalım.

create or replace function ObjectFunction(vDate in date)
  return ExampleObject is

  vSayi     number;
  vKarakter varchar2(100);
  vTarih    date;
  vObject   ExampleObject;

begin

  vSayi     := to_number(to_char(vDate, 'ddmmyyyy'));
  vKarakter := to_char(vDate, 'MONTH', 'nls_date_language=Turkish');
  vTarih    := vDate;

  vObject := ExampleObject(vSayi, vKarakter, vTarih);

  return vObject;

exception
  when others then
    dbms_output.put_line('Hata:' || sqlerrm);
end ObjectFunction;

Görüldüğü gibi fonksiyonumuzda hazır. Fonksiyon içindeki “vObject := ExampleObject(vSayi, vKarakter, vTarih);” satırı ile elimizdeki değişkenlerimizi object tipinin içindeki ilgili alanlara atamasını yapıyoruz. Şimdi hazır olan fonksiyonumuzu çalıştıralım ve sonuçlarına bakalım.

select ObjectFunction(sysdate) from dual;

Yukarıdaki kod çalıştığında bir tanımladığımız object içindeki tüm değişkenleri verecektir. Tablo düzgün çıkması için alan adlarındaki fonksiyon adını görselde kaldırdım sadece object isimlerini bıraktım.

VNUMBER VVARCHAR VDATE
1122013 ARALIK 01.12.2013 17:08:57

Bu özellik dışında ilgili fonksiyonun sonuna istediğimiz object elemanının adını yazarak da ilgili alanın değerini alabiliriz.

select ObjectFunction(sysdate).vNumber from dual;
OBJECTFUNCTION(SYSDATE).VNUMBE
1122013
select ObjectFunction(sysdate).vVarchar from dual;
OBJECTFUNCTION(SYSDATE).VVARCH
ARALIK
select ObjectFunction(sysdate).vDate from dual;
OBJECTFUNCTION(SYSDATE).VDATE
01.12.2013 17:12:16

Bu örnektenda anlaşılacağı gibi ihtiyacınız olan bir durumda doğru bir şekilde hazırlanan object ve fonskiyon yapısı ile bir seferde birden fazla içeriğe ve kullanım yapısına ulaşmış olursunuz.

Kolay gelsin.

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: