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?