oracle两oracle函数返回表,从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;

我收到的错误是:

>在FUNCTION FN_MyFunction行和PL / SQL上忽略语句:ORA-04044:每行上不允许执行过程,函数,包或类型INSERT INTO T_TABLE_COLL行

> PLS-00330:在RETURN行上无效使用类型名称或子类型名称

我对表格类型做错了什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值