Возвращение таблицы из функции Oracle

Я рассмотрел многие решения здесь, чтобы попытаться решить эту проблему, и они продвинулись довольно далеко, но теперь я нахожусь в сорняках из-за некоторых ошибок, которые я, кажется, не могу обойти.

Я на Oracle 11g. Мне нужна функция для возврата набора записей (таблица). Вот код, который я использую:

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;

Ошибки, которые я получаю от этого:

Statement Ignored on the FUNCTION FN_MyFunction line and PL/SQL: ORA-04044: procedure, function, package, or type is not allowed here on each line INSERT INTO T_TABLE_COLL line

PLS-00330: invalid use of type name or subtype name on the RETURN line

Что я делаю не так с типами таблиц?

Ответы на вопрос(1)

Ваш ответ на вопрос