我有类似
的类型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'处发现类型不匹配”
感谢
答案 0 :(得分:1)
你不能这样做吗?
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)
实现创建数组的对象。