• USE [blah]

    GO

    SET ANSI_NULLS ON

    GO

    SET QUOTED_IDENTIFIER ON

    GO

    CREATE PROC [dbo].[DeDupe]

    @projectID int,

    @dupVar1 varchar(20) ='',

    @dupVar2 varchar(20) ='',

    @dupVar3 varchar(20) =''

    as

    DECLARE @ProcessTable varchar(64)

    select @ProcessTable=ds_ProcessTable from blah.dbo.ds_dataset where ds_ProjectID=@ProjectID

    declare @SQLString varchar(1000)

    set @sqlString='with d1 as (

    select id, [var1]

    from

    ),

    d2 as (

    select id, [var1]

    from

    )

    update

    set statusflag = 10 where id in (

    select d1.id

    from d1, d2

    where d1.id > d2.id

    and d1.[var1] = d2.[var1]

    ) '

    if @dupvar2 <> ''

    begin

    SET @SQLString='with d1 as (

    select id, [var1], [var2]

    from

    ),

    d2 as (

    select id, [var1], [var2]

    from

    )

    update

    set statusflag = 10 where id in (

    select d1.id

    from d1, d2

    where d1.id > d2.id

    and d1.[var1] = d2.[var1]

    and d1.[var2] = d2.[var2]

    ) '

    SET @SQLString=REPLACE(@SQLString,'[var2]',@dupVar2)

    end

    if @dupvar3 <> ''

    begin

    SET @SQLString='with d1 as (

    select id, [var1], [var2], [var3]

    from

    ),

    d2 as (

    select id, [var1], [var2], [var3]

    from

    )

    update

    set statusflag = 10 where id in (

    select d1.id

    from d1, d2

    where d1.id > d2.id

    and d1.[var1] = d2.[var1]

    and d1.[var2] = d2.[var2]

    and d1.[var3] = d2.[var3]

    ) '

    SET @SQLString=REPLACE(@SQLString,'[var2]',@dupVar2)

    SET @SQLString=REPLACE(@SQLString,'[var3]',@dupVar3)

    end

    SET @SQLString=REPLACE(@SQLString,'

    ',@ProcessTable)

    SET @SQLString=REPLACE(@SQLString,'[var1]',@dupVar1)

    exec (@SQLString)