繁体   English   中英

Oracle-将光标数据插入自定义类型表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM