Re: Merge/update optimization

  • From: Edgar Chupit <chupit@xxxxxxxxx>
  • To: chrisstephens@xxxxxxx
  • Date: Mon, 1 Nov 2004 23:54:17 +0200

Dear Chris,

It is possible to include where clause in 10g to filter rows in when
matched subclause.

From the documentation:

Specify the where_clause if you want the database to execute the
update operation only if the specified condition is true. The
condition can refer to either the data source or the target table. If
the condition is not true, then the database skips the update
operation when merging the row into the table.

On Thu, 28 Oct 2004 14:42:59 -0400, Stephens, Chris
<chrisstephens@xxxxxxx> wrote:
> =20
> 
> I'm writing a batch update/insert procedure and am wondering if there is
> a way to only update columns corresponding to the 'on' clause if they
> are different from the current value?...instead of update all columns
> regardles of whether or not that are the same.
> 
> So...
> 
> Table stage
> Pk_id
> Col_a
> Col_b
> Col_c
> 
> Table prod
> Pk_id
> Col_a
> Col_b
> Col_c
> 
> Merge into a.prod using select * from b.stage on (a.pk_id=3Db.pk_id) =
> When
> matched then set a.col_a=3Db.col_a (but only if col_a has a different
> value) When not matched then insert...;
> 
> Thanks
> chris
> --
> //www.freelists.org/webpage/oracle-l
> 


-- 
  Edgar
--
//www.freelists.org/webpage/oracle-l

Other related posts: