PL/SQL verbeteringen in Oracle 10G - FORALL Support voor niet opeenvolgende Indexes
Oracle 10g introduceert support voor de FORALL syntaxys met niet-opeenvolgende indexes in collecties. De INDICES OF clause maakt het mogelijk om de FORALL syntaxys te gebruiken met sparse collections, terwijl de VALUE OF clause wordt gebruikt voor collections van indexes die naar andere collections verwijzen. Hier een paar voorbeelden hoe ze te gebruiken:
DECLARE
TYPE t_tab1 IS TABLE OF tab1%ROWTYPE;
TYPE t_tab2 IS TABLE OF BINARY_INTEGER;

l_tab1 t_tab1 := t_tab1();
l_tab2 t_tab2 := t_tab2();
BEGIN
FOR i IN 1 .. 1000 LOOP
l_tab1.extend;
l_tab1(l_tab1.last).id := i;
IF MOD(i, 100) = 0 THEN
l_tab2.extend;
l_tab2(l_tab2.last) := i;
END IF;
END LOOP;

l_tab1.delete(301);
l_tab1.delete(601);
l_tab1.delete(901);

-- Dit zou fout gaan door de sparse collection.
--FORALL i IN l_tab.first .. l_tab.last
-- INSERT INTO tab1 VALUES l_tab(i);

-- Dit gaat prima met parse collections.
FORALL i IN INDICES OF l_tab1
INSERT INTO tab1 VALUES l_tab1(i);

-- Dit werkt prima voor collections vanindexes
-- die naar onderdelen van andere collections verwijzen.
FORALL i IN VALUES OF l_tab2
INSERT INTO tab1 VALUES l_tab1(i);
END;
/
 

Advertentie

>

Poll

Voorkeur
 

Wie is er aanwezig

We hebben 164 gasten online