Возвращение таблицы из функции 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
Что я делаю не так с типами таблиц?