BULK COLLECT, SQL ve PL / SQL motoru arasındaki bağlam anahtarlarını azaltır ve SQL motorunun kayıtları bir kerede almasına izin verir.
Oracle PL / SQL, kayıtları tek tek getirmek yerine toplu olarak getirme işlevselliğini sağlar. Bu BULK COLLECT, kayıtları toplu olarak doldurmak veya imleci toplu olarak getirmek için 'SELECT' ifadesinde kullanılabilir. BULK COLLECT, kaydı BULK olarak getirdiği için, INTO yan tümcesi her zaman bir koleksiyon türü değişkeni içermelidir. BULK COLLECT kullanmanın temel avantajı, veritabanı ile PL / SQL motoru arasındaki etkileşimi azaltarak performansı artırmasıdır.
Sözdizimi:
SELECT BULK COLLECT INTO bulk_varaible FROM
;FETCH BULK COLLECT INTO ;
Yukarıdaki sözdiziminde, BULK COLLECT, 'SELECT' ve 'FETCH' ifadesinden veri toplamak için kullanılır.
Bu eğitimde öğreneceksiniz-
FORALL Madde
LIMIT Maddesi
TOPLU TOPLAMA Öznitelikleri
FORALL Madde
FORALL, veriler üzerinde toplu olarak DML işlemlerinin gerçekleştirilmesine izin verir. FOR döngüsünde işler kayıt düzeyinde olurken, FORALL'da LOOP kavramı yoktur. Bunun yerine, verilen aralıkta bulunan verilerin tamamı aynı anda işlenir.
Sözdizimi:
FORALL in… ;
Yukarıdaki sözdiziminde, verilen DML işlemi, alt ve üst aralık arasında bulunan tüm veriler için yürütülecektir.
LIMIT Maddesi
Toplu toplama kavramı, tüm verileri toplu olarak hedef toplama değişkenine yükler, yani tüm veriler tek seferde toplama değişkenine doldurulur. Ancak yüklenmesi gereken toplam kayıt çok büyük olduğunda bu tavsiye edilmez, çünkü PL / SQL tüm veriyi yüklemeye çalıştığında daha fazla oturum belleği tüketir. Bu nedenle, bu toplu toplama işleminin boyutunu sınırlamak her zaman iyidir.
Bununla birlikte, bu boyut sınırına 'SELECT' ifadesine ROWNUM koşulunun eklenmesi ile kolayca ulaşılabilir, oysa imleç durumunda bu mümkün değildir.
Oracle, bu sorunun üstesinden gelmek için toplu olarak eklenmesi gereken kayıtların sayısını tanımlayan 'LIMIT' maddesini sağlamıştır.
Sözdizimi:
FETCH BULK COLLECT INTO LIMIT ;
Yukarıdaki sözdiziminde, imleç getirme deyimi, LIMIT yan tümcesi ile birlikte BULK COLLECT deyimini kullanır.
TOPLU TOPLAMA Öznitelikleri
İmleç özelliklerine benzer şekilde BULK COLLECT, FORALL ifadesinin n inci DML ifadesinde etkilenen satır sayısını döndüren% BULK_ROWCOUNT (n) değerine sahiptir , yani, koleksiyondaki her bir değer için FORALL ifadesinde etkilenen kayıtların sayısını verecektir. değişken. 'N' terimi, satır sayısının gerekli olduğu koleksiyondaki değer sırasını belirtir.
Örnek 1 : Bu örnekte, BULK COLLECT kullanarak emp tablosundaki tüm çalışan adını projelendireceğiz ve ayrıca FORALL kullanarak tüm çalışanların maaşını 5000 artıracağız.
DECLARECURSOR guru99_det IS SELECT emp_name FROM emp;TYPE lv_emp_name_tbl IS TABLE OF VARCHAR2(50);lv_emp_name lv_emp_name_tbl;BEGINOPEN guru99_det;FETCH guru99_det BULK COLLECT INTO lv_emp_name LIMIT 5000;FOR c_emp_name IN lv_emp_name.FIRST… lv_emp_name.LASTLOOPDbms_output.put_line(‘Employee Fetched:‘||c_emp_name);END LOOP:FORALL i IN lv_emp_name.FIRST… lv emp_name.LASTUPDATE emp SET salaiy=salary+5000 WHERE emp_name=lv_emp_name(i);COMMIT; Dbms_output.put_line(‘Salary Updated‘);CLOSE guru99_det;END;/