Monday, June 8, 2009

CURSOR KULLANIMI VE BAZI BASİT ÖRNEKLER

DECLARE
CURSOR c1
IS
SELECT ali.country_id, ali.country_name
FROM aliates ali;

-- yeni_country_id ali.country_id%TYPE;

-- yeni_country_name ali.country_name%TYPE;

--burada ali alias ı global olmadıgı için select ifadesi bittiğinden ali değeri gidecektir.

--bu sesberen dolayı tablo adını kullanarak çağırmanız gerekecektir. aksi halde hata alırsınız.
yeni_country_id aliates.country_id%TYPE;
yeni_country_name aliates.country_name%TYPE;
BEGIN
OPEN c1;

LOOP
FETCH c1
INTO yeni_country_id, yeni_country_name;

EXIT WHEN c1%NOTFOUND;
DBMS_OUTPUT.put_line (yeni_country_id);
END LOOP;

CLOSE c1;
END;

Cursor sonuna gelene kadar ekrana yazmaya devam eder.

//////////////////////////////////////////////////////////////////////////////////////////////////////

DECLARE
sqlstring VARCHAR2 (500);

--sqlstring1 VARCHAR2 (200);
TYPE mycursor_type IS REF CURSOR;

mycursor mycursor_type;
cikti VARCHAR2 (100);
BEGIN
sqlstring := 'select TABLE_NAME from user_tables ';

OPEN mycursor FOR sqlstring;

FETCH mycursor
INTO cikti;

WHILE NOT mycursor%NOTFOUND
LOOP
--sqlstring1 := cikti;
DBMS_OUTPUT.put_line (cikti);

FETCH mycursor
INTO cikti;
END LOOP;
END;

Cursor kullanımı ile ilgili başka bir örnek bu örnekte while kullanılıyor. Sorgunun sonuçları cursor’e atılıyor daha sonar while ile (sonuna kadar gidilerek)cursordaki bütün elemanları ekrana tek tek yazıdırılıyor.

No comments: