我正在尝试从表abc中将值插入对象abc_type中 在某些情况下将形式abc_type插入abc_second对象。 他的错误是这不是一张桌子。是否有可能获取 数据从一个对象插入到另一个对象中。
create table abc(id number,name varchar2(50));
create or replace type abc_obj as object(id number,name varchar2(50) ) ;
create or replace type abc_ref as table of abc_obj;
declare
abc_type abc_ref := abc_ref();
abc_second abc_ref := abc_ref();
begin
select abc_obj(id ,name)
bulk collect into abc_type
from abc;
insert into table(abc_second) select * from abc_type where id=1;
end;
答案 0 :(得分:0)
不幸的是,Oracle用户在3个或更多完全不同的上下文中使用了“表”一词。当您“创建表...”时,将建立持久化数据的对象的定义,这是该术语的常规用法。但是,当您使用“ ...表...的形式”时,您将定义pl/sql collection(数组),用于在pl / sql中保存数据。在这种情况下,您创建了一个“嵌套表”(表的第三次使用)。 (注意:某些集合类型可以声明为表上的列属性。)
虽然不完全相同,但是对象定义也存在多个问题。
您没有解释“ second_table”的预期用途,但似乎您只是
来自“ abc”的数据副本。这可以通过多种方式来实现。如果基本上是一次性过程,那么
create table second_table as select * from abc;
如果这是正在进行的操作,则
create table second_table as select * from abc where 1=0;
-- then when ever needed
insert into second_table select * from abc;
如果这些都不满足您的预期用途,请扩展您的问题以解释预期用途。