Oracle - 将游标数据插入自定义类型表
Posted
技术标签:
【中文标题】Oracle - 将游标数据插入自定义类型表【英文标题】:Oracle - inserting cursor data into a custom type table 【发布时间】:2014-02-11 15:07:02 【问题描述】:我有一个像
这样的类型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' 处发现类型不匹配”
谢谢
【问题讨论】:
【参考方案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)
实现了创建数组的对象。
【讨论】:
以上是关于Oracle - 将游标数据插入自定义类型表的主要内容,如果未能解决你的问题,请参考以下文章
oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常
求oracle高手,存储过程中取游标值时,出现数据类型不一致问题,急急
oracle存储过程有没有对象的概念? 就是在定义参数的时候能不能定义一个对象呢?