• AccDba (2/6/2013)


    I found the stored proc that needs to be modified. I am not sure where the changes have to be made and I need some help from experts on this. In the stored proc below I want to update subscriber tables only if col6 value gets updated and do nothing if other columns get updated.

    USE [CCF_SubscriberDB]

    GO

    /****** Object: StoredProcedure [dbo].[sp_MSupd_dbo2006] Script

    SET QUOTED_IDENTIFIER ON

    GO

    ALTER procedure [dbo].[sp_MSupd_dbo2006]

    @c1 datetime = NULL,

    @c2 int = NULL,

    @c3 int = NULL,

    @c4 int = NULL,

    @c5 int = NULL,

    @c6 int = NULL,

    @c7 money = NULL,

    @c8 nvarchar(20) = NULL,

    @pkc1 datetime = NULL,

    @bitmap binary(1)

    as

    begin

    if (substring(@bitmap,1,1) & 1 = 1))

    begin

    update [dbo].[2006] set

    [Date] = case substring(@bitmap,1,1) & 1 when 1 then @c1 else [Date] end,

    [col1] = case substring(@bitmap,1,1) & 2 when 2 then @c2 else [col1] end,

    [col2] = case substring(@bitmap,1,1) & 4 when 4 then @c3 else [col2] end,

    [col3] = case substring(@bitmap,1,1) & 8 when 8 then @c4 else [col3] end,

    [col4] = case substring(@bitmap,1,1) & 16 when 16 then @c5 else [col4] end,

    [col5] = case substring(@bitmap,1,1) & 32 when 32 then @c6 else [col5] end,

    [col6] = case substring(@bitmap,1,1) & 64 when 64 then @c7 else [col6] end,

    [col7] = case substring(@bitmap,1,1) & 128 when 128 then @c8 else [col7] end

    where [Date] = @pkc1

    if @@rowcount = 0

    if @@microsoftversion>0x07320000

    exec sp_MSreplraiserror 20598

    end

    else

    begin

    update [dbo].[2006] set

    [col1] = case substring(@bitmap,1,1) & 2 when 2 then @c2 else [col1] end,

    [col2] = case substring(@bitmap,1,1) & 4 when 4 then @c3 else [col2] end,

    [col3] = case substring(@bitmap,1,1) & 8 when 8 then @c4 else [col3] end,

    [col4] = case substring(@bitmap,1,1) & 16 when 16 then @c5 else [col4] end,

    [col5] = case substring(@bitmap,1,1) & 32 when 32 then @c6 else [col5] end,

    [col6] = case substring(@bitmap,1,1) & 64 when 64 then @c7 else [col6] end,

    [col7] = case substring(@bitmap,1,1) & 128 when 128 then @c8 else [col7] end

    where [Date] = @pkc1

    if @@rowcount = 0

    if @@microsoftversion>0x07320000

    exec sp_MSreplraiserror 20598

    end

    end

    GO

    Thanks,

    In the above update statement delete columns except for col6 and then add only the below update in both places:

    update dbo.2006 set [col6] = case substring(@bitmap,1,1) & 64 when 64 then @c7 else [col6] end where

    [Date] = @pkc1

    “If your actions inspire others to dream more, learn more, do more and become more, you are a leader.” -- John Quincy Adams