PL-SQL dilinde VARRAY olarak isimlendirilen veri tipi, klasik programlama dillerindeki Array’e denk gelmektedir. Varray tanımlanırken toplam boyutu ve içine atılacak verinin tipi önceden belirlenir. Örneğin : TYPE t_tamsayi IS VARRAY(100) OF NUMBER(10);
Bu kod bize şunu söyler: Maximum 100 elemanlı, number(10) tipinde, t_tamsayı isminde bir array tanımlandı.Sonrasında array’i initialize edip, içine ilgili elemanlar eklenir (add element).
Aşağıda 2 farklı şekilde initialize edilmiş örnek bulunmaktadır. 1. Örnekte: mus_no array’i başta boş oluşturulup, extend metodu çağırıldıktan sonra, içine elemanlar eklenmiştir. Bu kullanım daha ziyade loop içinde array’e data atmak için kullanılır. Loop kısmını basitliği bozmamak için eklemiyorum. 2. Örnekte; constructor methodu çağırılırken, elemanlarda array’ın içine yazılıyor. Değerler başta belli olduğu durumlarda bu yöntem kullanılır. 1. örnekte olduğu gibi önce extend etmek şartı ile eleman atanabilir.
Extend’in obje_adi.extend() şeklinde kullandığımızda, 1 null eleman oluşturur. obje_adi.extend(30) komutunu kullanırsak, array’da 30 adet null eleman oluşmuş olur.
DECLARE TYPE t_tamsayi IS VARRAY(100) OF NUMBER(10); --100 elemanlı, number(10) tipinde t_tamsayı isminde bir array tanımlandı. mus_no t_tamsayi; --t_tamsayı tipinde değişken tanımlandı. Değişken adı: mus_no. vkn t_tamsayi; BEGIN mus_no:=t_tamsayi(); --array i kullanabilmek için constructor ile initialize etmek zorundayız. mus_no.extend(); --array e eklenecek her eleman için, extend fonksiyonu çağırılır. Yer allocate edip, null elemanı tutar. mus_no(1):= 12345; --array in 1. elemanına 12345 değerini atar. mus_no.extend(); mus_no(2):= 6789; vkn:=t_tamsayi(1122334455,5678912345,9876543210); --initialize anında değer atadık. dbms_output.put_line(mus_no(1)); --output: 12345 . array deki n. elemanı bu şekilde okuruz mus_no(n) dbms_output.put_line(mus_no(2)); --output: 6789 dbms_output.put_line(vkn(3)); --output: 9876543210 vkn.extend(); vkn(4):= 1023456789; dbms_output.put_line(vkn(4)); --output: 1023456789 --her eleman eklenmek istediğinde, öncesinde extend fonksiyonu kullanılır. Eklenecek elaman adedi parametre olarak geçilebilir: dbms_output.put_line(vkn.count()); --output: 4 --eleman sayısını verir vkn.extend(30); -- dbms_output.put_line(vkn.count()); --output: 34 END;
Bu makalede array’lerde count, extend methodlarının örnekleri incelenmiş olup, Colleciton’larda kullanılan diğer fonksiyonları (EXISTS, LIMIT, FIRST, LAST, PRIOR, NEXT, TRIM ve DELETE) farklı makalelerde yer alacaktır.