Monday, June 8, 2009

SORGU SONUCUNU DİZİYE AKTARMA

Aşağıda yazmaya çalılşıtım procedure ile tablo sonucunu diziye aktardim ve dha sonra ekrana yazdırdım. Tabloyu diziye aktarma işlemi diyebiliriz.

DECLARE
--cursor tanımla
CURSOR mycursor
IS
SELECT table_name
FROM user_tables;

--diziyi type olarak tanımla
--dizi boyunu iyi belirlemek gerekiyor çok fazla verince hata üretiyor. Az verincede yetmiyor.
TYPE tables_dizi_type IS VARRAY (10000) OF user_tables%ROWTYPE;

-- yeni bir dizi oluştur.
tables_dizi tables_dizi_type;
-- dizide dolaşmak için değişkenler
index1 NUMBER;
index2 PLS_INTEGER;
BEGIN
--başlangıç değerini 0 olrak belirliyoruz. diziler sıfırdan başladığı için.
index1 := 0;
tables_dizi := tables_dizi_type ();

--cursor ile for döngüsü yap sonuna kadar dolaş.
FOR for_cursor IN mycursor
LOOP
--dizi elemanın değerini birer artir.
index1 := index1 + 1;
tables_dizi.EXTEND ();
tables_dizi (index1).table_name := for_cursor.table_name;
--diziye atama işlmemini yap.
END LOOP;

--ekrana yazmak için aşağıdaki yapı yeterlidir.

FOR index2 IN 1 .. tables_dizi.COUNT
LOOP
DBMS_OUTPUT.put_line (tables_dizi (index2).table_name);
END LOOP;
END;

No comments: