我在这里查看了许多解决方案来尝试解决这个问题,他们已经走了很远,但现在我陷入了一些我似乎无法克服的错误中。
我在 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;
我从中收到的错误是:
在 FUNCTION FN_MyFunction 行和 PL/SQL 上忽略的语句:ORA-04044:在每一行上都不允许使用过程、函数、包或类型 INSERT INTO T_TABLE_COLL 行
PLS-00330:在 RETURN 行上无效使用类型名称或子类型名称
我对表格类型做错了什么?