从一个对象插入另一个对象

时间:2019-08-27 03:58:12

标签: plsql

我正在尝试从表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; 

1 个答案:

答案 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; 

如果这些都不满足您的预期用途,请扩展您的问题以解释预期用途。