Skip navigation

Gyűjtőtáblák

Gyűjtőtáblák kezelése

A gyűjtőtáblák részben listaszerű, részben pedig tömbszerű struktúrűk. A gyűjtőtáblák cellái számmal indexelhetőek, de nem feltétlen folytonos az indexek számozása, vagyis hézagok lehetnek az indexekben.

A gyűjtőtábla létrehozásához deklarálni kell egy gyűjtőtábla típus, ahol megadjuk, hogy milyen elemeket tárol. Ezt követően egy változó típusaként megadhatjuk a létrehozott gyűjtőtábla típusunkat. A kapcsos zárójel itt választást jelöl.

Létrehozás:
TYPE táblatípusnév IS TABLE OF {oszloptípus | rekodtípus } INDEX BY BINARY_INTEGER;

A gyűjtáblák használatára gyűjtábla metódusok szolgálnak:

  • EXISTS(n): igaz, ha az n-edik index létezik
  • COUNT: a táblában lévő elemek száma
  • FIRST/LAST: az első és utolsó elem indexét adja vissza
  • NEXT(n): a táblában az n-et követő index értéke
  • DELETE(n): törli az n-edik indexen lévő elemet

Példa

DECLARE
    TYPE tipus IS TABLE OF DEMO.vevo%ROWTYPE
      INDEX BY BINARY_INTEGER;
    valtozo tipus;
    ind BINARY_INTEGER := 1;
BEGIN
    -- gyűjtőtábla feltöltése
    LOOP
        SELECT * INTO valtozo(ind)
       
FROM DEMO.vevo
        WHERE partner_id = 20 + ind;
        ind := ind + 1;
        EXIT WHEN ind > 8;
    END LOOP;
    -- a gyűjtőtáblában tárolt értékek kiíratása
    ind := valtozo.FIRST;
    LOOP
        DBMS_OUTPUT.PUT_LINE(valtozo(ind).megnevezes);
        ind := ind + 1;
        EXIT WHEN ind > valtozo.LAST;
    END LOOP;
END;