--标准update语法
UPDATE SPSJJH SPS
SET (JZ, PSKS, PSZL) =
(SELECT JZ, PSKS, PSZL FROM KCT WHERE SPTM = SPS.TM)
WHERE exists (select 1 from KCT where SPTM = SPS.TM )
-- inline view更新法
update (select a.JZ,
a.PSKS,
a.PSZL,
b.JZ as new_JZ,
b.PSKS as new_PSKS,
b.PSZL as new_PSZL
from SPSJJH a, KCT b
where b.SPTM = a.TM)
set JZ = new_JZ, PSKS = new_PSKS, PSZL = new_PSZL
--快速游标更新法
begin
for cr in (select a.rowid,b.JZ ,b.PSKS, b.PSZL from SPSJJH a,KCT b
where a.TM=b.SPTM)
loop
update SPSJJH set JZ=cr.JZ,PSKS = cr.PSKS,PSZL = cr.PSZL where
rowid = cr.rowid;
endloop;
end;
--merge更新法
merge into SPSJJH a
using KCT b
on (a.TM=b.SPTM)
when matched then update set a.JZ=b.JZ,a.PSKS = b.PSKS,a.PSZL = b.PSZL
/*
标准update语法
单表更新或较简单的语句采用使用此方案更优。
inline view更新法
两表关联且被更新表通过关联表主键关联的,采用此方案更优。
merge更新法
两表关联且被更新表不是通过关联表主键关联的,采用此方案更优。
快速游标更新法
多表关联且逻辑复杂的,采用此方案更优。
*/
UPDATE SPSJJH SPS
SET (JZ, PSKS, PSZL) =
(SELECT JZ, PSKS, PSZL FROM KCT WHERE SPTM = SPS.TM)
WHERE exists (select 1 from KCT where SPTM = SPS.TM )
-- inline view更新法
update (select a.JZ,
a.PSKS,
a.PSZL,
b.JZ as new_JZ,
b.PSKS as new_PSKS,
b.PSZL as new_PSZL
from SPSJJH a, KCT b
where b.SPTM = a.TM)
set JZ = new_JZ, PSKS = new_PSKS, PSZL = new_PSZL
--快速游标更新法
begin
for cr in (select a.rowid,b.JZ ,b.PSKS, b.PSZL from SPSJJH a,KCT b
where a.TM=b.SPTM)
loop
update SPSJJH set JZ=cr.JZ,PSKS = cr.PSKS,PSZL = cr.PSZL where
rowid = cr.rowid;
endloop;
end;
--merge更新法
merge into SPSJJH a
using KCT b
on (a.TM=b.SPTM)
when matched then update set a.JZ=b.JZ,a.PSKS = b.PSKS,a.PSZL = b.PSZL
/*
标准update语法
单表更新或较简单的语句采用使用此方案更优。
inline view更新法
两表关联且被更新表通过关联表主键关联的,采用此方案更优。
merge更新法
两表关联且被更新表不是通过关联表主键关联的,采用此方案更优。
快速游标更新法
多表关联且逻辑复杂的,采用此方案更优。
*/