【求助】关于type table 批量插入object table

shcqupc shcqupc 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
--创建测试数据
create table table1(
C1 varchar2(100),
C2 varchar2(100)
);
INSERT INTO table1 VALUES('111','AAA');
INSERT INTO table1 VALUES('222','BBB');
INSERT INTO table1 VALUES('333','CCC');
INSERT INTO table1 VALUES('444','DDD');
INSERT INTO table1 VALUES('555','EEE');
COMMIT;

--定义type类型如下
CREATE OR REPLACE type t_obj is object(
C1 varchar2(100),
C2 varchar2(100)
);
CREATE OR REPLACE type t_tab is table of t_obj;

--创建FUNCTION
CREATE OR REPLACE FUNCTION test1(
I_CUR IN SYS_REFCURSOR)RETURN t_tab
AS
v_obj_tab t_tab := t_tab();
TYPE t_type_tab IS TABLE OF table1%ROWTYPE;
v_type_tab t_type_tab;
BEGIN
LOOP
FETCH I_CUR BULK COLLECT INTO v_type_tab;
EXIT WHEN I_CUR%NOTFOUND;
END LOOP;

/*这种写法是错误的
求助:
有什么办法可以批量将v_type_tab的数据插入到v_obj_tab

SELECT t_obj(t.C1,t.C2)
BULK COLLECT INTO v_obj_tab
FROM TABLE(v_type_tab) t;*/

RETURN v_obj_tab;
END;

--测试
SELECT * FROM TABLE(test1(cursor(select * from table1)));
...全文
评论 4
收藏 已收藏
分享
返回顶部
shcqupc
Oracle 高级技术 3,499 成员 18,710 内容