Cursor Nedir?
Cursor’lar
geçici çalışma alanları olarak bir SQL ifadesi çalıştırıldığında
oluşturulurlar. Böyle bir cursor içinde select ifadesinin ve içindeki
satırlarca veriyi içerir. Bu alan
sayesinde veritabanından kaydedilmiş bilgiler elde edilir. Bir cursor birden
fazla satır bilgisini içinde tutabilir ancak her seferinde en fazla bir tane
satır inceleyebilir. 2 tip cursor bulunmaktadır.
1) Implicit (Üstü kapalı-Otomatik)
Cursor : Bu cursor tipi, kullanılan bütün DML ifadeleri (select, insert,
update, delete) sırasında oluşturulan en
fazla bir tane satır incelememizi sağlamaktadır.
2) Explicit (Açık –Belirli) Cursor:
Bunlar da birden fazla sonuç döndüren select ifadelerinde kullanılmaktadırlar.
Bu 2 cursor tipi aynı işleve
sahiptirler ancak erişim biçiminde farklılık gösterirler.
Explicit Cursors
Explicit
cursor’lar PL/SQL bloğumuzun tanımlama kısmında yaratılırlar. Genel-
de bir
select ifadesi üzerinden yaratılırlar. Cursor’ımız için belirli bir ad
tanımlayabiliriz.
Genel yazım biçimi:
Cursor cursor_adi is
select_ifadesi;
·
Cursor_adi
herhangi istediğimiz bir ad olabilir.
·
Select_ifadesi
ise birden fazla satır sonuç döndüren bir ifade olacaktır.
Explicit Cursor’lar Nasıl Kullanılırlar?
Bu cursor’lar ilk önce
tanımlanmalıdırlar.
Sonra cursor’lar açılmalıdır.
1. Adımda cursor içindeki verilerimiz
PL/SQL değişkenlerine aktarılmalıdırlar.
Son olarak da cursor kapatılmalıdır.
Cursor tanımlanmasına örnek olarak:
DECLARE
CURSOR deneme_cur IS
SELECT *
FROM calisanlar
WHERE maas> 5000;
Yukarıdaki
örnekte çalışanlar tablosundan maaşı 5000’in üzerinde olan tüm
çalışanları
cursor içine atarız. Bir kere tanımladıktan sonra program bloğu içerisinde
tekrar
cursor’ımıza erişebiliriz.
1> DECLARE
2> rec1 tablo1%rowtype;
3> CURSOR cur1 IS
4> SELECT *
5> FROM
6> WHERE maas > 1000;
7> BEGIN
8> OPEN cur1;
9> FETCH cur1 INTO rec1;
10> dbms_output.put_line (rec1.first_name || ' ' ||
11>rec1.last_name);
12> CLOSE emp_cur;
13> END;
atanır. Sonrasında ise programın ana kısmında bu cursor açılır ve buradan veri fetch
edilerek oluşturduğumuz kayıt içine atılır. Burada da rec1 içindeki eskiden tablo1 içinde
olan first_name ve last_name kolonları alınır.Sonrasında da elde ettiğimiz verileri yazıp
cursor’ımızı kapatırız.
Hiç yorum yok:
Yorum Gönder