[英]Oracle - inserting cursor data into a custom type table
我有一个像
CREATE OR REPLACE TYPE MY_TYPE AS OBJECT
(
id NUMBER(10, 0),
name VARCHAR2(4),
lastName VARCHAR2(13),
address VARCHAR2(30),
previousAddress VARCHAR2(80)
);
和这些表作为
CREATE OR REPLACE TYPE MY_TYPE_ROWS AS TABLE OF MY_TYPE
我想做的是在“ MY_TYPE_ROWS”表中插入一些从游标返回的行。 (我想在PL / SQL过程中做到这一点)
我要插入“ MY_TYPE_ROWS”中的数据位于游标中,例如:
cursor dataCursor IS
select
id,name, lastName,address,previousAddress
from table1;
(光标返回超过1行)
我已经尝试过类似的东西:
my_table_rows MY_TYPE_ROWS := MY_TYPE_ROWS ();
OPEN dataCursor ;
FETCH dataCursor
INTO my_table_rows;
CLOSE dataCursor ;
但是我遇到异常“错误:PLS-00386:FETCH游标和INTO变量之间的'my_table_rows'发现类型不匹配”
谢谢
你不能那样吗?
declare
my_table_rows my_type_rows;
begin
select my_type(id,name,lastname,address,previousaddress)
bulk collect into my_table_rows
from table1;
-- do whatever you want
end;
你的方法的问题是,你正在试图通过单一选择一行into
甚至不包含任何对象。
根据定义,它应该是an array of objects
。 因此, bulk collect
实现了数组的提取,而my_type(id,name,lastname,address,previousaddress)
实现了创建数组的对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.