从现有表中获取记录并在Oracle中插入新记录

时间:2013-09-20 04:06:22

标签: oracle oracle11g

我有2张表xyz和abc。 abc是xyz的子代,xyz中有两列,即xyz1,xyz2。

表abc中还有三列,即xyz1,abc1,abc2。

我想编写一个存储过程,我将传递两个参数。

123, 456. 

123是表xyz中记录的主键。

查询应从父表和子表中获取123的记录,并插入具有主键456的新记录,其余字段为记录123.

我正在使用Oracle 8i。

1 个答案:

答案 0 :(得分:1)

您只需要两个插入选择语句:

create or replace procedure(vi_fromkey integer, vi_tokey integer) as
begin
  insert into xyz (xyz1, xyz2) select vi_tokey, xyz2 from xyz where xyz = vi_fromkey;
  insert into abc (xyz1, abc1, abc2) select vi_tokey, abc1, abc2 from abc where xyz = vi_fromkey;
end;