【求助】关于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)));
...全文

相关推荐

SQLServer 批量插入数据的两种方法

在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题。下面介绍SQL Server支持的两种批量数据插入方法:Bulk和表值参数(Table-Valued Parameters)。

weixin_38685608

mysql大批量数据插入

需求:需要频繁的插入数据到MySQL数据库中,设计目标要求能支持平均每秒插入1000条数据以上 方法:mysql批量数据插入方法及性能参考

LFJ_99058

Oracle批量插入数据的三种方式【推荐】

第一种: begin insert into tableName(column1, column2, column3...) values(value1,value2,value3...); insert into tableName(column1, column2, column3...) values(value1,value2,value3...); insert into tableName(column1, column2, column3...) values(value1,value2,value3...); ... end; 第二种: insert int

weixin_38635449

mybatis插入与批量插入返回ID的原理详解

主要给大家介绍了关于mybatis插入与批量插入返回ID的原理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mybatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

weixin_38711972

Mysql使用insert插入多条记录 批量新增数据

如果要向table1中插入5条记录,下面写法是错误的: INSERT INTO table1 (id,name) VALUES(1,小明,2,小强,3,小杜,4,小李,5,小白); MySQL将会抛出下面的错误 ERROR 1136: Column count doesn't match value count at row 1 而正确的写法应该是这样: INSERT INTO t able1(i,name) VALUES(1,'小明'),(2,'小强'),(3,'小杜'),(4,'小李'),(5,'小白'); 当然,这种写法也可以省略列名,这样每一对括号里的值的数目必须一致,而且这个数

weixin_38526225
评论 4
收藏 已收藏
分享
返回顶部
shcqupc
Oracle 高级技术 3,499 成员 18,710 内容