БУЛК ЦОЛЛЕЦТ смањује пребацивање контекста између СКЛ и ПЛ / СКЛ механизма и омогућава СКЛ механизму да одједном преузима записе.
Орацле ПЛ / СКЛ пружа функционалност скупног дохвата записа, уместо појединачног. Овај БУЛК ЦОЛЛЕЦТ се може користити у наредби „СЕЛЕЦТ“ за попуњавање записа скупно или за скупно преузимање курсора. Будући да БУЛК ЦОЛЛЕЦТ запис преузима у БУЛК, клаузула ИНТО увек треба да садржи променљиву типа колекције. Главна предност употребе БУЛК ЦОЛЛЕЦТ-а је што повећава перформансе смањењем интеракције између базе података и ПЛ / СКЛ механизма.
Синтакса:
SELECT BULK COLLECT INTO bulk_varaible FROM
;FETCH BULK COLLECT INTO ;
У горњој синтакси, БУЛК ЦОЛЛЕЦТ се користи за прикупљање података из израза „СЕЛЕЦТ“ и „ФЕТЦХ“.
У овом упутству ћете научити-
Клаузула ФОРАЛЛ
Клаузула ЛИМИТ
БУЛК ЦОЛЛЕЦТ Атрибути
Клаузула ФОРАЛЛ
ФОРАЛЛ омогућава скупно извршавање ДМЛ операција на подацима. Слична је оној у наредби ФОР петље, осим у ФОР петљи ствари се дешавају на нивоу записа, док у ФОРАЛЛУ нема концепта ЛООП. Уместо тога, истовремено се обрађују целокупни подаци присутни у датом опсегу.
Синтакса:
FORALL in… ;
У горњој синтакси, дата ДМЛ операција ће се извршити за целокупне податке који су присутни између нижег и вишег опсега.
Клаузула ЛИМИТ
Концепт скупног прикупљања учитава целокупне податке у циљну променљиву прикупљања као скуп, тј. Цели подаци ће се попунити у променљиву прикупљања једним потезом. Али ово није упутно када је укупан запис који треба учитати веома велик, јер када ПЛ / СКЛ покуша да учита целокупне податке, троши више меморије сесије. Стога је увек добро ограничити величину ове операције скупљања масовних количина.
Међутим, ово ограничење величине може се лако постићи увођењем услова РОВНУМ у израз „СЕЛЕЦТ“, док у случају курсора то није могуће.
Да би превазишао ово, Орацле је обезбедио клаузулу 'ЛИМИТ' која дефинише број записа које треба укључити у групу.
Синтакса:
FETCH BULK COLLECT INTO LIMIT ;
У горњој синтакси, наредба за преузимање курсора користи наредбу БУЛК ЦОЛЛЕЦТ заједно са клаузулом ЛИМИТ.
БУЛК ЦОЛЛЕЦТ Атрибути
Слично атрибутима курсора, БУЛК ЦОЛЛЕЦТ има% БУЛК_РОВЦОУНТ (н) који враћа број редова погођених у н- том ДМЛ изразу израза ФОРАЛЛ, односно даће број записа који су погођени у ФОРАЛЛ изразу за сваку појединачну вредност из колекције променљива. Израз 'н' означава редослед вредности у колекцији, за који је потребан број редова.
Пример 1 : У овом примеру ћемо пројектовати сва имена запослених из емп табеле помоћу БУЛК ЦОЛЛЕЦТ, а такође ћемо повећати плату свих запослених за 5000 користећи ФОРАЛЛ.
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;/