需求:

对于数据库的某些表,我们常要复制其对应的某条记录,新纪录与老记录仅有某一两个字段值不一样,其他完全一样。寻找简单的方案,而不是逐个字段拼Sql。

 

解决方案1:

begin
  for rs in (select * from dept where deptno=40)
  loop
    rs.deptno:=50;
    insert into dept values rs;
  end loop;
end;
/

 

解决方案2:

declare
  cursor dept_cursor is select * from dept where deptno=40;
begin
  for dept_rs in dept_cursor
  loop
    exit when dept_cursor%notFound;
    dept_rs.deptno:=null;
    insert into dept values dept_rs;
  end loop;
end;
/

 

备注:

查询的 表名 与插入的 表名 可以不一样,例如,查询:descartes,插入descartes_history

 

若有更好方法,请指教。

posted on 2010-08-20 15:57  马侃  阅读(10907)  评论(1编辑  收藏  举报