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