USP_ATTRIBUTE_DELETECONSTITUENTATTRIBUTE

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_ATTRIBUTE_DELETECONSTITUENTATTRIBUTE
(
  @CONSTITUENTID uniqueidentifier
)
as
begin
    set nocount on;

    declare @TABLENAME nvarchar(128);
    declare @COLUMNNAME nvarchar(128);
    declare @SQL nvarchar(500);

    declare attribute_cursor cursor local fast_forward for 
         select 'ATTRIBUTE' + REPLACE(AC.ID,'-',''),         
            case
                    when RT.BASETABLENAME in ('MODELINGANDPROPENSITY', 'CONSTITUENT') and AC.ONLYALLOWONEPERRECORD = 1 then 'ID'
                    when RT.BASETABLENAME = 'MODELINGANDPROPENSITY' then 'MODELINGANDPROPENSITYID'
                    else 'CONSTITUENTID'
            end
            from ATTRIBUTECATEGORY AC
              join ATTRIBUTERECORDTYPE ART on ART.ID = AC.ATTRIBUTERECORDTYPEID
              join RECORDTYPE RT on RT.ID = ART.RECORDTYPEID
            where RT.BASETABLENAME in ('MODELINGANDPROPENSITY', 'CONSTITUENT');

    open attribute_cursor;
    fetch next from attribute_cursor into @TABLENAME, @COLUMNNAME;

    while @@fetch_status = 0
    begin

        set @SQL = 'delete from dbo.' + @TABLENAME + ' where ' + @COLUMNNAME + ' = ''' + cast(@CONSTITUENTID as nvarchar(36)) + '''';
        exec sp_executesql @SQL;

        fetch next from attribute_cursor into @TABLENAME, @COLUMNNAME;
    end

    close attribute_cursor;
    deallocate attribute_cursor;
end