Hurriyet

12 Kasım 2012 Pazartesi

PL/SQL Ders 6


PL/SQL Kayıtları(Records)
 
 
Kayıt(Records) Nedir?
 
               Kayıtlar Oracle’ın değişken tutucu olarak belirlediği veri tiplerinden biridir. Kayıt 
veri tipleri komposit-birleşik olarak tanımlanır. Yani birden fazla veritipinin kombinasyon-
undan oluşmaktadır. Örneğin char,varchar,number gibi veri tiplerinin birleşimidir. Her veri
 tipi bir değer tutmaktadır. Kayıtları bir satır veri olarak düşünebiliriz. Bir satır içindeki bü-
tün bilgileri tutmaktadır.
 
Kayıt Tanımlamak:
 
               Bir kayıt tanımlamak için ilk önce birleşik bir veri tipi tanımlamamız gerekir. Son-
ra da ondan bir kayıt tanımlanır.
 
Kayıtların genel yazım şekli:
 
Type kayıt_tipi_adi is RECORD
{
İlk_kolon_adi kolon_veri_tipi,
İkinci_kolon_adi kolon_veri_tipi,
üçüncü_kolon_adi kolon_veri_tipi,
...
};
 
·         Kayit_tipi_adi birleşik veri tipinin adıdır.
·         İlk_kolon_adi,İkinci_kolon_adi .... bunlar kayıt içindeki kolonların adlarıdır.
·         Kolon_veri_tipi  kolonun veri tipini belirler.
 
Veri tiplerini tanımlamanın değişik yolları bulunmaktadır.
 
               1-Her zamanki gibi bir tablo tanımlarken kullandığımız şekilde:
 
Kolon_adı kolon_tipi; 
 
               2-Eğer kolon veritabanındaki başka bir tabloya dayanıyorsa, veri_tipi şu şekil-
de de tanımlanabilinir:
 
Kolon_adi tablo_adi.kolon_adi%type;
            Veri tipini bu şekilde belirterek veri tipini dinamik olarak bu tabloya atamış olur-
uz. Bu metod eğer veri tipi değiştirilirse ana tabloda, kodun tekrar değiştirilmesine ger-
ek olmaz.
 
            Sonrasında eğer kayıt değişkeni oluşturmak istersek şu şekilde tanımlama yapa-
biliriz.

Kayıt_adi kayit_tipi_adi;
 
            Bu örneğimizde calisan_rec adlı bir kaydı nasıl tanımladığımızı göstereceğiz. 
Bu örnekte calisanlar adlı hayali tablomuzdaki last_name,dept ve salary tipindeki kolon-
lar tiplerinden değişkenler oluşturulur. Sonrada bundan calisan_rec adli kaydı oluştururuz.
 
 
DECLARE 
TYPE calisan_tip_rec _type IS RECORD 
(employee_id number(5), 
 employee_first_name varchar2(25), 
 employee_last_name calisanlar.last_name%type, 
 employee_dept calisanlar.dept%type,
 employee_salary calisanlar.salary%type); 
 
 calisan_rec  calisan_tip_rec;
 
 
            Eğer kaydımızdaki tüm elemanlar bir tablonun değişken tiplerinde olacaksa, 
şöyle bir kısayolu kullanabiliriz.
 
Kayıt_adı tablo_adi%ROWTYPE;
 
·         Rowtype olarak tanımlamanın avantajı, her değişkenin tipini tamamen ken-
dimiz yazmak zorunda kalmayız.
 
·         Ayrıca eğer tablo yapısında bir değişiklik olursa tabloyu güncellememize ger-
ek kalmaz.

·         Ancak bu  rowtype’ı kullanırken dikkat etmemiz gereken şey tablonunu tama-
mıyle kopyalandığıdır. O zaman da hafıza kısıdımız zorlanır. O yüzden ancak gerek-
tiğinde rowtype’ı kullanmalıyız.
 
               Bir kayıda değerleri atarken,  bu kaydın içindeki alanlara direk değer atama
 yapabiliriz.
 
               Bunu şu şekilde yapabiliriz.
 
               Kayıt_adi.kolon_adi:=deger;
 
               Herhangi bir select ifadesinden kayıtlara yine direk aktarım yapabiliriz. Bunu
 da şu şekilde yapabiliriz.
 
Select kolon1,kolon2
İnto kayit_adi.kolon_adi1, kayit_adi.kolon_adi2 
from tablo_adi
(where şart);
 
 
               Eğer direk rowtype kullanarak bir kayıt oluşturduysak o zaman bütun kayda
 bir select sorgusuyla direk değerleri atabiliriz. Böylece tek tek atamaktan kurtuluruz.
 
Select * 
into kayit_adi 
from tablo_adi 
(where şart);
 
               Eğer kaydın herhangi bir alanındaki değeri görmek istersek o zaman da bas-
itçe kaydın görmek istediğimiz kolon adını referans gösterip alabiliriz.
 
Değişken := kayit_adi.kolon_adi;
 

Hiç yorum yok:

Yorum Gönder