Zwracanie tabeli z funkcji Oracle

Przejrzałem wiele rozwiązań tutaj, aby spróbować rozwiązać ten problem, a oni osiągnęli już całkiem spory zasięg, ale teraz mam do czynienia z niektórymi błędami, których nie mogę ominąć.

Jestem na Oracle 11g. Potrzebuję funkcji, aby zwrócić zestaw rekordów (tabela). Oto kod, którego używam:

CREATE TYPE T_TABLE IS OBJECT
(
    Field1 int
    , Field2 int
);

CREATE TYPE T_TABLE_COLL IS TABLE OF T_TABLE;

CREATE OR REPLACE FUNCTION FN_MyFunction
RETURN T_TABLE_COLL 
IS
BEGIN
  FOR I IN (SELECT Field1, Field2 FROM Table1) LOOP
    IF I.Field1 = 1 THEN
        BEGIN           
            INSERT INTO T_TABLE     
            SELECT Field1, Field2
            FROM Table2
            WHERE Field2 = I.Field2;
        END;
    ELSIF I.Field1 = 2 THEN
        BEGIN           
            INSERT INTO T_TABLE     
            SELECT Field1, Field2
            FROM Table2
            WHERE Field2 = I.Field2;
        END;  
  END IF;
  END LOOP;
  RETURN T_SMRYACCT_TABLE_COLL;
END;

Błędy, które otrzymuję z tego są:

Instrukcja Zignorowana w linii FUNKCJA FN_MyFunction i PL / SQL: ORA-04044: procedura, funkcja, pakiet lub typ nie są tutaj dozwolone w każdym wierszu INSERT INTO T_TABLE_COLL

PLS-00330: nieprawidłowe użycie nazwy typu lub nazwy podtypu w linii RETURN

Co robię źle z typami tabel?

questionAnswers(1)

yourAnswerToTheQuestion