DECLARE
  TYPE moj_typ_tabelowy IS
    TABLE Of emp%ROWTYPE NOT NULL
    INDEX BY BINARY_INTEGER;
  tab moj_typ_tabelowy;
  i INTEGER;
  
  CURSOR e IS
  SELECT * FROM emp;
BEGIN
  i := 0;
  OPEN e;
  LOOP
    i := i + 2;
    FETCH e INTO tab(i);
    EXIT WHEN e%NOTFOUND;
  END LOOP;
  CLOSE e;

  DBMS_OUTPUT.Put_Line('Pierwszy:'|| tab.FIRST);
  DBMS_OUTPUT.Put_Line('ostatni:'|| tab.LAST);
  DBMS_OUTPUT.Put_Line('wszystkich:'|| tab.COUNT);
  DBMS_OUTPUT.Put_Line('nastepny po 6:'|| tab.NEXT(6));
  IF tab.EXISTS(6) THEN
    DBMS_OUTPUT.Put_Line('6 istnieje');
  ELSE
    DBMS_OUTPUT.Put_Line('6 nieistnieje');
  END IF;

  tab.DELETE(6,10);
  DBMS_OUTPUT.Put_Line('pozostalo:'|| tab.COUNT);
  DBMS_OUTPUT.Put_Line('nastepny po 6:'|| tab.NEXT(6));
  IF tab.EXISTS(6) THEN
    DBMS_OUTPUT.Put_Line('6 istnieje');
  ELSE
    DBMS_OUTPUT.Put_Line('6 nieistnieje');
  END IF;
END;
/
