需求:
对于数据库的某些表,我们常要复制其对应的某条记录,新纪录与老记录仅有某一两个字段值不一样,其他完全一样。寻找简单的方案,而不是逐个字段拼Sql。
解决方案1:
1
2
3
4
5
6
7
8
|
begin
for
rs
in
(
select
*
from
dept
where
deptno=40)
loop
rs.deptno:=50;
insert
into
dept
values
rs;
end
loop;
end
;
/
|
解决方案2:
1
2
3
4
5
6
7
8
9
10
11
|
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