USP_BBAFILEIMPORT_ATTRIBUTES

This procedure is used by the Target Analytics File Import Record Operation for saving the attributes from a Target Analytics Import File to the database.

Parameters

Parameter Parameter Type Mode Description
@PARENTID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@TYPECODE int IN
@ATTRIBUTECATEGORYTABLECATALOGID nchar IN
@STRINGVALUE nvarchar(max) IN
@INTEGERVALUE int IN
@DATETIMEVALUE datetime IN
@DECIMALVALUE money IN
@BOOLEANVALUE bit IN
@STARTDATE datetime IN

Definition

Copy


            CREATE procedure dbo.USP_BBAFILEIMPORT_ATTRIBUTES (
                @PARENTID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier = null,
                @TYPECODE int = 0,
                @ATTRIBUTECATEGORYTABLECATALOGID nchar(32) = '',
                @STRINGVALUE nvarchar(max) = '',
                @INTEGERVALUE integer = 0,
                @DATETIMEVALUE datetime = null,
                @DECIMALVALUE money = 0,
                @BOOLEANVALUE bit = 0,
                @STARTDATE datetime = null
            ) as
                set nocount on;

                if @CHANGEAGENTID is null
                    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                begin try
                    declare @IDCOLUMNNAME nvarchar(50);
                    declare @IDPARAMETERNAME nvarchar(50);
                    declare @VALUECOLUMNNAME nvarchar(50);
                    declare @ONLYALLOWONEPERRECORD bit;

                    select
                        @ONLYALLOWONEPERRECORD = AC.ONLYALLOWONEPERRECORD,
                        @IDCOLUMNNAME = case AC.ONLYALLOWONEPERRECORD when 0 then RT.BASETABLENAME else '' end + 'ID',
                        @VALUECOLUMNNAME = case when AC.VALUECOLUMNNAME = '' or AC.VALUECOLUMNNAME is null then 'VALUE' else AC.VALUECOLUMNNAME end,
                        @IDPARAMETERNAME = case AC.ONLYALLOWONEPERRECORD when 0 then 'PARENTID' else 'ID' end
                    from dbo.ATTRIBUTECATEGORY AC
                    left join dbo.ATTRIBUTERECORDTYPE ART on ART.ID = AC.ATTRIBUTERECORDTYPEID
                    left join dbo.RECORDTYPE RT on RT.ID = ART.RECORDTYPEID
                    where replace(AC.ID,'-','') = @ATTRIBUTECATEGORYTABLECATALOGID;

                    declare @PROCEDURESQL nvarchar(2048);
                    set @PROCEDURESQL = 'if @ONLYALLOWONEPERRECORD = 1 begin
                        declare @ATTRIBUTEID uniqueidentifier;
                        select @ATTRIBUTEID = ID from dbo.ATTRIBUTE' + @ATTRIBUTECATEGORYTABLECATALOGID + ' where ' + @IDCOLUMNNAME + ' = @PARENTID;
                        exec dbo.USP_ATTRIBUTE' + @ATTRIBUTECATEGORYTABLECATALOGID + '_DELETEBYID_WITHCHANGEAGENTID @ID = @ATTRIBUTEID, @CHANGEAGENTID = @CHANGEAGENTID;
                    end

                    if not exists(select ID from dbo.ATTRIBUTE' + @ATTRIBUTECATEGORYTABLECATALOGID + ' where ' + @IDCOLUMNNAME + ' = @PARENTID and ' + @VALUECOLUMNNAME + ' = @VALUE) begin
                        exec dbo.USP_ATTRIBUTE' + @ATTRIBUTECATEGORYTABLECATALOGID + '_ADD @' + @IDPARAMETERNAME +' = @PARENTID, @VALUE = @VALUE, @STARTDATE = @STARTDATE, @CHANGEAGENTID = @CHANGEAGENTID;
                    end';

                    declare @PARAMETERDEFINITION nvarchar(500);
                    set @PARAMETERDEFINITION = N'@PARENTID uniqueidentifier, @CHANGEAGENTID uniqueidentifier, @ONLYALLOWONEPERRECORD bit, @STARTDATE datetime';

                    if @TYPECODE = 0 begin
                        set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUE nvarchar(255)';

                        declare @VALUE0 nvarchar(255);
                        set @VALUE0 = substring(@STRINGVALUE,1,255);
                        exec sp_executesql @PROCEDURESQL, @PARAMETERDEFINITION,  @PARENTID = @PARENTID, @CHANGEAGENTID = @CHANGEAGENTID, @ONLYALLOWONEPERRECORD = @ONLYALLOWONEPERRECORD, @VALUE = @VALUE0, @STARTDATE = @STARTDATE;
                    end
                    else if @TYPECODE = 1 begin
                        set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUE int';

                        exec sp_executesql @PROCEDURESQL, @PARAMETERDEFINITION,  @PARENTID = @PARENTID, @CHANGEAGENTID = @CHANGEAGENTID, @ONLYALLOWONEPERRECORD = @ONLYALLOWONEPERRECORD, @VALUE = @INTEGERVALUE, @STARTDATE = @STARTDATE;
                    end
                    else if @TYPECODE = 2 begin
                        set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUE datetime';

                        exec sp_executesql @PROCEDURESQL, @PARAMETERDEFINITION,  @PARENTID = @PARENTID, @CHANGEAGENTID = @CHANGEAGENTID, @ONLYALLOWONEPERRECORD = @ONLYALLOWONEPERRECORD, @VALUE = @DATETIMEVALUE, @STARTDATE = @STARTDATE;
                    end
                    else if @TYPECODE = 3 begin
                        set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUE money';

                        exec sp_executesql @PROCEDURESQL, @PARAMETERDEFINITION,  @PARENTID = @PARENTID, @CHANGEAGENTID = @CHANGEAGENTID, @ONLYALLOWONEPERRECORD = @ONLYALLOWONEPERRECORD, @VALUE = @DECIMALVALUE, @STARTDATE = @STARTDATE;
                    end
                    else if @TYPECODE = 4 begin
                        set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUE bit';

                        exec sp_executesql @PROCEDURESQL, @PARAMETERDEFINITION,  @PARENTID = @PARENTID, @CHANGEAGENTID = @CHANGEAGENTID, @ONLYALLOWONEPERRECORD = @ONLYALLOWONEPERRECORD, @VALUE = @BOOLEANVALUE, @STARTDATE = @STARTDATE;
                    end
                    else if @TYPECODE = 7 begin
                        set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUE nvarchar(8)';

                        declare @VALUE7 nvarchar(8);
                        set @VALUE7 = substring(@STRINGVALUE,1,8);
                        exec sp_executesql @PROCEDURESQL, @PARAMETERDEFINITION,  @PARENTID = @PARENTID, @CHANGEAGENTID = @CHANGEAGENTID, @ONLYALLOWONEPERRECORD = @ONLYALLOWONEPERRECORD, @VALUE = @VALUE7, @STARTDATE = @STARTDATE;
                    end
                    else if @TYPECODE = 8 begin
                        set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUE nvarchar(4)';

                        declare @VALUE8 nvarchar(8);
                        set @VALUE8 = substring(@STRINGVALUE,1,4);
                        exec sp_executesql @PROCEDURESQL, @PARAMETERDEFINITION,  @PARENTID = @PARENTID, @CHANGEAGENTID = @CHANGEAGENTID, @ONLYALLOWONEPERRECORD = @ONLYALLOWONEPERRECORD, @VALUE = @VALUE8, @STARTDATE = @STARTDATE;
                    end
                    else if @TYPECODE = 9 begin
                        set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUE nvarchar(max)';

                        exec sp_executesql @PROCEDURESQL, @PARAMETERDEFINITION,  @PARENTID = @PARENTID, @CHANGEAGENTID = @CHANGEAGENTID, @ONLYALLOWONEPERRECORD = @ONLYALLOWONEPERRECORD, @VALUE = @STRINGVALUE, @STARTDATE = @STARTDATE;
                    end
                end try
                begin catch
                    exec dbo.USP_RAISE_ERROR;
                    return 1;
                end catch