我已經在這裏看過很多解決方案來嘗試解決這個問題,他們已經變得相當遠了,但是現在我處於一些錯誤的雜草中,我似乎無法過去。從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;
的錯誤是:
聲明忽略的功能FN_MyFunction線和PL/SQL:ORA-04044:過程,函數,包裝或類型在這裏不允許在每一行INSERT INTO T_TABLE_COLL線
PLS-00330:在返回線路的無效使用類型名稱或子類型名稱的
我在做什麼錯誤的表類型?
如果你正在做的插入/更新或刪除使用存儲過程,而不是更多的信息功能一個函數。 – user75ponic
我需要將結果連接到其他表,我不相信我可以在連接子句中使用SP。 – Matt