【求助】关于type table 批量插入object table
--创建测试数据
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)));
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提供了两种主要的方法:Bulk Insert和表值参数(Table-Valued Parameters)。1.
mysql大批量数据插入
批量插入语句的格式如下:```sqlINSERT INTO table_name (column1, column2, ..., columnN)VALUES (rec1_val1, rec1_val2
Oracle批量插入数据的三种方式【推荐】
在Oracle数据库中,批量插入数据是一项常见的操作,特别是在处理大量数据时,为了提高效率和减少网络传输,批量插入成为首选。以下将详细介绍标题中提到的三种Oracle批量插入数据的方法。
mybatis插入与批量插入返回ID的原理详解
批量插入返回ID的原理与单个插入相同,但是需要使用`<batch>`标签来指定批量插入的SQL语句。在批量插入时,MyBatis会将所有数据组装成一个批量插入语句,然后将其传递给数据库执行。
Mysql使用insert插入多条记录 批量新增数据
错误的批量插入示例如下:```sqlINSERT INTO table1 (id, name) VALUES (1, '小明', 2, '小强', 3, '小杜', 4, '小李', 5, '小白');


