PLSQL Cursor For Loop Kullanımı | Oracle Cursor Loop

PLSQL Cursor For Loop Kullanımı

PLSQL Cursor For Loop kullanımı bize herhangi bir select ifadesi ile tanımladığımız Cursor’un içindeki satırları gezecektir. Daha iyi anlamak için öncelikle PLSQL For loop Kullanımı başlıklı yazıma göz atabilirsiniz.

PLSQL Cursor ile For Loop Birleşimi

 Cursor, Loop içerisinde her çalıştığında, Cursor’u oluşturan select sorgusundan dönen her bir satır verinin tüm kolonlarını bize döndürecektir. Örneğin bir sorgudan dönen değerleri çıktı olarak göstermek istiyoruz. Ancak diğer döngü örneklerindeki gibi (   PLSQL WHILE LOOP  ,   PLSQL LOOP   ) döngünün kaç defa dönmesi gerektiğini ve ne zaman durması gerektiğini bir koşul ile sınırlayamıyoruz. Tek bildiğimiz select sorgusundan dönen satır sayısı kaç ise, döngü de aynı sayıda çalışacaktır. Cursor yapısı, bir cursor select sorgusunun bize döndürdüğü satır ve sütunları yani , bize bu select sorgusu ile dönen tablonun içini gezebildiğimiz bir imleç yapısıdır. Bu imleç nerede ise cursor select sorgusunun tablosundaki o veri bizim için ulaşılabilirdir artık. Ve biz tüm cursor select sorgusu satırlarının içini gezmek isteriz. İşte bu yeteneği PLSQL’e sağlayan PLSQL Cursor For Loop Kullanımıdır.


Örneğimiz:

declare
cursor cursor1 is
select table_name,tablespace_name from user_tables where rownum<5;
begin
for rec_ in cursor1
LOOP
Dbms_Output.put_line('Table_name :' || rec_ .table_name || ' ve ' ||'TableSpace_name ' || rec_ .tablespace_name);
end loop;
end;%MINIFYHTMLaa956dbb49b01b02c9e66c6b030cfa486%%MINIFYHTMLaa956dbb49b01b02c9e66c6b030cfa487%

Kodu kopyalayıp çalıştırdığımızda çıktı aşağıdaki gibi olacaktır.

Çıktı:

Table_name :INSTALL_TEM_SYS_TAB ve TableSpace_name IFSAPP_DATA
Table_name :MODULE_TAB ve TableSpace_name IFSAPP_DATA
Table_name :MODULE_DB_PATCH_TAB ve TableSpace_name IFSAPP_DATA
Table_name :MODULE_DEPENDENCY_TAB ve TableSpace_name IFSAPP_DATA


Not 1: PLSQL Cursor for loop kullanımı örneğimizde, “rec_” değişkeni ile bir Record tanımlamış olduk.

Bu Record implicitly tanımlanan bir Record’dur. For içinde kullanarak Bu Record’a da “cursor1” in verilerini tutacağını belirtmiş oluyoruz.

Ve gerçekten de döngü içinde artık “rec_” ile adlandırdığımız Record ve “.” nokta operatörüyle “table_name” ve “tablespace_name” değişkenlerini output olarak yazdırabildik.

 

Not 2: Buradaki rownum ifadesi satır sayısını sınırlar. Bu her SQL select sorgusunda kullanabileceğimiz bir ifadedir. Aynı Zamanda “rownum” ifadesi kolon olarak da tanımlanabilir. 

 

Şimdi gelelim PLSQL Cursor For Loop‘umuza ;

PLSQL Cursor For Loop Örneği İnceleme

Döngümüzde oluşturduğumuz cursor1 cursoru bir select ifadesinin döndürdüğü sonuçları dönüyor.

Bu sorgu;

select table_name,tablespace_name from user_tables where rownum<5;Gördüğünüz gibi burada bize 5 ten küçük olan satır sayılarını getir dedik.

Yani döngümüz 4 defa dönecek. İlgili PLSQL Cursor For Loop içerisindeki ifadeler 4 defa çalıştırıldıktan sonra “end loop” ifadesi son kez çalışacak ve yazdığımız bu anonymous block olan plsql kodumuz son bulacaktır.

PLSQL Cursor For Loop Kullanımı başlıklı yazımızın sonuna geldik. Daha güzel yazılarda görüşmek dileğiyle 🙂

 

Faydalandığım Kaynak

PLSQL CURSOR FOR LOOP KULLANIMI
PLSQL CURSOR FOR LOOP KULLANIMI