BULK COLLECT vähentää kontekstinvaihtoa SQL: n ja PL / SQL-moottorin välillä ja antaa SQL-moottorin noutaa tietueet kerralla.
Oracle PL / SQL tarjoaa toiminnot, joiden avulla tietueet haetaan kerralla eikä haeta yksitellen. Tätä BULK COLLECT -ohjelmaa voidaan käyttää SELECT-käskyssä tietueiden täyttämiseen joukkona tai kohdistimen hakemiseen joukkona. Koska BULK COLLECT hakee tietueen BULK-muodossa, INTO-lausekkeen tulisi aina sisältää kokoelmatyyppinen muuttuja. BULK COLLECTin käytön tärkein etu on se, että se parantaa suorituskykyä vähentämällä tietokannan ja PL / SQL-moottorin välistä vuorovaikutusta.
Syntaksi:
SELECT BULK COLLECT INTO bulk_varaible FROM
;FETCH BULK COLLECT INTO ;
Edellä olevassa syntaksissa BULK COLLECTia käytetään tietojen keräämiseen SELECT- ja FETCH-käskyistä.
Tässä opetusohjelmassa opit-
FORALL-lauseke
LIMIT-lauseke
BULK COLLECT -attribuutit
FORALL-lauseke
FORALL mahdollistaa DML-operaatioiden suorittamisen tiedoille irtotavarana. Se on samanlainen kuin FOR-silmukka-lause, paitsi että FOR-silmukassa asiat tapahtuvat ennätystasolla, kun taas FORALLissa ei ole LOOP-käsitettä. Sen sijaan kaikki tietyllä alueella olevat tiedot käsitellään samanaikaisesti.
Syntaksi:
FORALL in… ;
Edellä olevassa syntaksissa annettu DML-operaatio suoritetaan koko datalle, joka on alemman ja korkeamman alueen välillä.
LIMIT-lauseke
Joukkokeräyskonsepti lataa koko datan kohdekokoelmamuuttujaan joukkona eli koko data täytetään keräämismuuttujaan kerralla. Mutta tämä ei ole suositeltavaa, kun ladattava koko tietue on erittäin suuri, koska kun PL / SQL yrittää ladata koko datan, se kuluttaa enemmän istuntomuistia. Siksi on aina hyvä rajoittaa tämän joukkokeräystoiminnon kokoa.
Tämä kokorajoitus voidaan kuitenkin saavuttaa helposti lisäämällä ROWNUM-ehto SELECT-käskyyn, kun taas kohdistimen tapauksessa tämä ei ole mahdollista.
Tämän voittamiseksi Oracle on toimittanut LIMIT-lausekkeen, joka määrittelee joukkoon sisällytettävien tietueiden määrän.
Syntaksi:
FETCH BULK COLLECT INTO LIMIT ;
Yllä olevassa syntaksissa kohdistimen hakulauseke käyttää BULK COLLECT -käskyä LIMIT-lausekkeen kanssa.
BULK COLLECT -attribuutit
Samanlainen kohdistin määritteet IRTOLASTIALUSTEN COLLECT on% BULK_ROWCOUNT (n), joka palauttaa rivien vaikuttaa n : nnen DML selvitys FORALL lausuman, toisin sanoen se antaa lasken Records vaikutettu FORALL lausuman jokaisesta arvon kokoelmasta muuttuja. Termi 'n' osoittaa kokoelman arvosarjan, jolle rivien määrää tarvitaan.
Esimerkki 1 : Tässä esimerkissä heijastetaan kaikki työntekijöiden nimet emp taulukosta käyttämällä BULK COLLECT -ohjelmaa, ja aiomme myös nostaa kaikkien työntekijöiden palkkaa 5000: lla FORALL-sovelluksella.
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;/