USP_BBNC_COMMITPROFILEUPDATEPRIMARYALUMNIBUILTINATTRIBUTES

Updates a constituent's primary education history record's built-in attribute information from a Blackbaud Internet Solutions profile transaction to the system from a given batch.

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN
@XMLITEMS xml IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN

Definition

Copy


            CREATE procedure dbo.USP_BBNC_COMMITPROFILEUPDATEPRIMARYALUMNIBUILTINATTRIBUTES
                (
                    @CONSTITUENTID uniqueidentifier = null,                            
                    @XMLITEMS xml = null,
                    @CHANGEAGENTID uniqueidentifier = null,
                    @CHANGEDATE datetime = null
                ) with execute as owner
                    as
                    set nocount on;

                    declare @TOTALROWS int;
                    declare @ROWCOUNT int;
                    declare @ATTRIBUTETYPEID int;
                    declare @DATATYPECODE tinyint;
                    declare @ALLOWMULTIPLES bit;
                    declare @TABLENAME nvarchar(100);
                    declare @ATTRIBUTENAME nvarchar(100);
                    declare @CODETABLENAME nvarchar(100);
                    declare @ATTRIBUTECOUNT int;
                    declare @MSG nvarchar(255);
                    declare @SQL nvarchar(max);
                    declare @PARAMS nvarchar(max);
                    declare @MATCHES int;
                    declare @ISCODETABLE bit;
                    declare @ISYESNO bit;
                    declare @ISCURRENCY bit;
                    declare @DELETEATTRIBUTE bit;
                    declare @ATTRIBUTES table 
                        (
                        [ATTRIBUTETYPEID] int,
                        [VALUE] nvarchar(max),
                        [TABLEENTRYID] uniqueidentifier,
                        [BOOLEANCODE] tinyint,
                        [CURRENCYID] uniqueidentifier
                        ) ;
                    declare @TABLES table 
                        ( 
                        ROWNUM int identity (1, 1) primary key not null ,
                        [ATTRIBUTETYPEID] int,
                        [DATATYPECODE] tinyint,
                        [ALLOWMULTIPLES] bit,
                        [TABLENAME] nvarchar(100),
                        [ATTRIBUTENAME] nvarchar(100),
                        [CODETABLENAME] nvarchar(100),
                        [CURRENCYID] uniqueidentifier
                        ) ;

                    if @CONSTITUENTID is null
                        begin
                            raiserror('The constituent ID is required',16,1);
                            return -2;
                        end

                    declare @EDUCATIONALHISTORYID uniqueidentifier;
                    select
                        @EDUCATIONALHISTORYID = EDUCATIONALHISTORY.ID
                    from
                        dbo.EDUCATIONALHISTORY
                    where
                        EDUCATIONALHISTORY.CONSTITUENTID = @CONSTITUENTID
                        and EDUCATIONALHISTORY.ISPRIMARYRECORD = 1;

                    if @EDUCATIONALHISTORYID is null
                        begin
                            raiserror('The constituent must have a primary educational history record.',16,1);
                            return -2;
                        end

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

                    if @CHANGEDATE is null
                        set @CHANGEDATE = getdate();

                    declare @ORGANIZATIONCURRENCYID uniqueidentifier;
                    set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

                    set @XMLITEMS =
                        (
                            select
                                ITEM.ELEMENT.query('*[local-name() != "CURRENCYID"]'),
                                case
                                    when ITEM.ELEMENT.exist('CURRENCYID[1]') = 0
                                        then @ORGANIZATIONCURRENCYID
                                    when len(ITEM.ELEMENT.value('CURRENCYID[1]', 'nvarchar(max)')) = 0
                                        then @ORGANIZATIONCURRENCYID
                                    when ITEM.ELEMENT.value('CURRENCYID[1]', 'uniqueidentifier') = '00000000-0000-0000-0000-000000000000'
                                        then @ORGANIZATIONCURRENCYID
                                    else
                                        ITEM.ELEMENT.value('CURRENCYID[1]', 'uniqueidentifier')
                                end as CURRENCYID
                            from
                                @XMLITEMS.nodes('/ATTRIBUTES/ITEM') ITEM(ELEMENT)
                            for xml raw('ITEM'),type,elements,root('ATTRIBUTES'),BINARY BASE64
                        );

                    -- Build a temporary table to hold the values from XMLITEMS

                    insert into @ATTRIBUTES 
                        select 
                            [ATTRIBUTETYPEID],
                            [VALUE],
                            [TABLEENTRYID],
                            [BOOLEANCODE],
                            [CURRENCYID]
                        from 
                            dbo.UFN_BBNC_ATTRIBUTES_FROMITEMLISTXML(@XMLITEMS)
                        where
                            [ATTRIBUTETYPEID] >= 500;

                    -- Build a distinct list of each attribute type to be processed

                    insert into @TABLES ([ATTRIBUTETYPEID], [DATATYPECODE], [ALLOWMULTIPLES], [TABLENAME], [ATTRIBUTENAME], [CODETABLENAME], [CURRENCYID])
                        select distinct
                            ATTRIBUTES.ATTRIBUTETYPEID,
                            ATTRIBUTECATEGORY.DATATYPECODE + 1,
                            case when ATTRIBUTECATEGORY.ONLYALLOWONEPERRECORD = 1 then 0 else 1 end as ALLOWMULTIPLES,
                            TABLECATALOG.TABLENAME,
                            ATTRIBUTECATEGORY.NAME,
                            CODETABLECATALOG.DBTABLENAME,
                            ATTRIBUTES.CURRENCYID
                        from
                            @ATTRIBUTES ATTRIBUTES
                        inner join
                            dbo.BBNCATTRIBUTECATEGORYIDMAP on ATTRIBUTES.ATTRIBUTETYPEID = BBNCATTRIBUTECATEGORYIDMAP.ID
                        inner join
                            dbo.ATTRIBUTECATEGORY on BBNCATTRIBUTECATEGORYIDMAP.ATTRIBUTECATEGORYID = ATTRIBUTECATEGORY.ID
                        inner join
                            dbo.TABLECATALOG on ATTRIBUTECATEGORY.TABLECATALOGID = TABLECATALOG.ID
                        left join
                            dbo.CODETABLECATALOG on ATTRIBUTECATEGORY.CODETABLECATALOGID = CODETABLECATALOG.ID;

                    select @TOTALROWS = count(*) from @TABLES;

                    if @TOTALROWS > 0
                        begin
                            set @ROWCOUNT = 1;

                            begin try
                                while @ROWCOUNT <= @TOTALROWS
                                    begin
                                        select 
                                            @ATTRIBUTETYPEID = ATTRIBUTETYPEID,
                                            @DATATYPECODE = DATATYPECODE,
                                            @ALLOWMULTIPLES = ALLOWMULTIPLES,
                                            @TABLENAME = TABLENAME,
                                            @ATTRIBUTENAME = ATTRIBUTENAME,
                                            @CODETABLENAME = CODETABLENAME
                                        from
                                            @TABLES
                                        where
                                            ROWNUM = @ROWCOUNT;

                                        if @DATATYPECODE = 6 and @CODETABLENAME is not null
                                            set @ISCODETABLE = 1
                                        else
                                            set @ISCODETABLE = 0;

                                        if @DATATYPECODE = 5
                                            set @ISYESNO = 1
                                        else
                                            set @ISYESNO = 0;

                                        if @DATATYPECODE = 4
                                            set @ISCURRENCY = 1
                                        else
                                            set @ISCURRENCY = 0;

                                        if @ALLOWMULTIPLES = 0
                                            begin
                                                select
                                                    @ATTRIBUTECOUNT = count(*)
                                                from
                                                    @ATTRIBUTES
                                                where
                                                    [ATTRIBUTETYPEID] = @ATTRIBUTETYPEID;

                                                if @ATTRIBUTECOUNT > 1
                                                    begin
                                                        set @MSG = N'The ' + @ATTRIBUTENAME + N' attribute only permits a single entry per educational history record.';
                                                        raiserror(@MSG,16,1);
                                                        return -2;
                                                    end

                                                if @ISCODETABLE = 1
                                                    if
                                                    (
                                                        select top (1)
                                                            TABLEENTRYID
                                                        from
                                                            dbo.UFN_BBNC_ATTRIBUTES_FROMITEMLISTXML(@XMLITEMS)
                                                        where
                                                            [ATTRIBUTETYPEID] = @ATTRIBUTETYPEID
                                                    ) is null
                                                        set @DELETEATTRIBUTE = 1;
                                                    else
                                                        set @DELETEATTRIBUTE = 0;
                                                else if @ISYESNO = 1
                                                    if
                                                    (
                                                        select top (1)
                                                            BOOLEANCODE
                                                        from
                                                            dbo.UFN_BBNC_ATTRIBUTES_FROMITEMLISTXML(@XMLITEMS)
                                                        where
                                                            [ATTRIBUTETYPEID] = @ATTRIBUTETYPEID
                                                    ) is null
                                                        set @DELETEATTRIBUTE = 1;
                                                    else
                                                        set @DELETEATTRIBUTE = 0;
                                                else
                                                    if
                                                    (
                                                        select top (1)
                                                            VALUE
                                                        from
                                                            dbo.UFN_BBNC_ATTRIBUTES_FROMITEMLISTXML(@XMLITEMS)
                                                        where
                                                            [ATTRIBUTETYPEID] = @ATTRIBUTETYPEID
                                                            and len(VALUE) > 0 --TMV 04/16/2007 CR272679-041207 Text, number, date, and currency attributes cannot have zero-length values

                                                    ) is null
                                                        set @DELETEATTRIBUTE = 1;
                                                    else
                                                        set @DELETEATTRIBUTE = 0;

                                                set @SQL = N'select @MATCHES = count(*) from dbo.' + @TABLENAME + N' where ID = @EDUCATIONALHISTORYID';
                                                set @PARAMS = N'@EDUCATIONALHISTORYID uniqueidentifier, @MATCHES int output';

                                                exec sp_executesql @SQL, @PARAMS, @EDUCATIONALHISTORYID = @EDUCATIONALHISTORYID, @MATCHES = @MATCHES output;

                                                if @MATCHES > 0
                                                    begin
                                                        if @DELETEATTRIBUTE = 1
                                                            begin
                                                                -- Delete

                                                                set @SQL = N'delete from dbo.' + @TABLENAME + N' where ID = @EDUCATIONALHISTORYID';
                                                                set @PARAMS = N'@EDUCATIONALHISTORYID uniqueidentifier';

                                                                exec sp_executesql @SQL, @PARAMS, @EDUCATIONALHISTORYID = @EDUCATIONALHISTORYID;
                                                            end

                                                        else
                                                            begin
                                                                -- Update

                                                                if @ISCURRENCY = 1
                                                                begin
                                                                    set @SQL = N'with CONVERTEDATTRIBUTE as (select CURRENCYVALUES.BASEAMOUNT as VALUE, CURRENCYVALUES.TRANSACTIONCURRENCYID as CURRENCYID, CURRENCYVALUES.ORGANIZATIONEXCHANGERATEID, CURRENCYVALUES.ORGANIZATIONAMOUNT ';
                                                                    set @SQL = @SQL + N'from dbo.UFN_CURRENCY_GETCURRENCYVALUES_2(';
                                                                    set @SQL = @SQL + N'(select top 1 VALUE from dbo.UFN_BBNC_ATTRIBUTES_FROMITEMLISTXML(@XMLITEMS) where [ATTRIBUTETYPEID] = @ATTRIBUTETYPEID), ';
                                                                    set @SQL = @SQL + N'(select top 1 DATEADDED from dbo.' + @TABLENAME + N' where ID = @EDUCATIONALHISTORYID), ';
                                                                    set @SQL = @SQL + N'(select top 1 CURRENCYID from dbo.UFN_BBNC_ATTRIBUTES_FROMITEMLISTXML(@XMLITEMS) where [ATTRIBUTETYPEID] = @ATTRIBUTETYPEID), ';
                                                                    set @SQL = @SQL + N'null, null, null, null, null, ';
                                                                    set @SQL = @SQL + N'(select top 1 ORGANIZATIONEXCHANGERATEID from dbo.' + @TABLENAME + N' as ATTRIBUTETABLE ';
                                                                    set @SQL = @SQL + N'inner join dbo.CURRENCYEXCHANGERATE on ATTRIBUTETABLE.ORGANIZATIONEXCHANGERATEID = CURRENCYEXCHANGERATE.ID ';
                                                                    set @SQL = @SQL + N'where ATTRIBUTETABLE.ID = @EDUCATIONALHISTORYID and CURRENCYEXCHANGERATE.FROMCURRENCYID = ATTRIBUTETABLE.CURRENCYID and CURRENCYEXCHANGERATE.TOCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()), 1) as CURRENCYVALUES)';
                                                                    set @SQL = @SQL + N'update dbo.' + @TABLENAME + N' set ';
                                                                    set @SQL = @SQL + N'VALUE = (select top 1 VALUE from CONVERTEDATTRIBUTE),';
                                                                    set @SQL = @SQL + N'CURRENCYID = (select top 1 CURRENCYID from CONVERTEDATTRIBUTE),';
                                                                    set @SQL = @SQL + N'ORGANIZATIONEXCHANGERATEID = (select top 1 ORGANIZATIONEXCHANGERATEID from CONVERTEDATTRIBUTE),';
                                                                    set @SQL = @SQL + N'CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CHANGEDATE ';
                                                                    set @SQL = @SQL + N'where ID = @EDUCATIONALHISTORYID';
                                                                end
                                                                else
                                                                begin
                                                                    set @SQL = N'update dbo.' + @TABLENAME + N' set ';
                                                                    if @ISCODETABLE = 1
                                                                        set @SQL = @SQL + @CODETABLENAME + N'ID = (select top 1 TABLEENTRYID from dbo.UFN_BBNC_ATTRIBUTES_FROMITEMLISTXML(@XMLITEMS) where [ATTRIBUTETYPEID] = @ATTRIBUTETYPEID),'
                                                                    else if @ISYESNO = 1
                                                                        set @SQL = @SQL + N'BOOLEANCODE = (select top 1 BOOLEANCODE from dbo.UFN_BBNC_ATTRIBUTES_FROMITEMLISTXML(@XMLITEMS) where [ATTRIBUTETYPEID] = @ATTRIBUTETYPEID),';
                                                                    else
                                                                        set @SQL = @SQL + N'VALUE = (select top 1 VALUE from dbo.UFN_BBNC_ATTRIBUTES_FROMITEMLISTXML(@XMLITEMS) where [ATTRIBUTETYPEID] = @ATTRIBUTETYPEID),';
                                                                    set @SQL = @SQL + N'CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CHANGEDATE ';
                                                                    set @SQL = @SQL + N'where ID = @EDUCATIONALHISTORYID';
                                                                end

                                                                set @PARAMS = N'@XMLITEMS xml, @ATTRIBUTETYPEID int, @CHANGEAGENTID uniqueidentifier, @CHANGEDATE datetime, @EDUCATIONALHISTORYID uniqueidentifier';

                                                                exec sp_executesql @SQL, @PARAMS, @XMLITEMS = @XMLITEMS, @ATTRIBUTETYPEID = @ATTRIBUTETYPEID, @CHANGEAGENTID = @CHANGEAGENTID, @CHANGEDATE = @CHANGEDATE, @EDUCATIONALHISTORYID = @EDUCATIONALHISTORYID;
                                                            end;
                                                    end
                                                else
                                                    if @DELETEATTRIBUTE = 0
                                                        begin
                                                            -- Insert

                                                            set @SQL = N'insert into dbo.' + @TABLENAME + N' (ID, ';
                                                            if @ISCODETABLE = 1
                                                                begin
                                                                    set @SQL = @SQL + @CODETABLENAME + N'ID, ';
                                                                    set @SQL = @SQL + N'ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED) ';
                                                                    set @SQL = @SQL + N'select top 1 @EDUCATIONALHISTORYID, TABLEENTRYID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE from dbo.UFN_BBNC_ATTRIBUTES_FROMITEMLISTXML(@XMLITEMS) where [ATTRIBUTETYPEID] = @ATTRIBUTETYPEID';
                                                                end
                                                            else if @ISYESNO = 1
                                                                begin
                                                                    set @SQL = @SQL + N'[BOOLEANCODE], ';
                                                                    set @SQL = @SQL + N'ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED) ';
                                                                    set @SQL = @SQL + N'select top 1 @EDUCATIONALHISTORYID, BOOLEANCODE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE from dbo.UFN_BBNC_ATTRIBUTES_FROMITEMLISTXML(@XMLITEMS) where [ATTRIBUTETYPEID] = @ATTRIBUTETYPEID';
                                                                end
                                                            else if @ISCURRENCY = 1
                                                                begin
                                                                    set @SQL = @SQL + N'[VALUE], [CURRENCYID], [ORGANIZATIONEXCHANGERATEID], [ORGANIZATIONVALUE], ';
                                                                    set @SQL = @SQL + N'ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED) ';
                                                                    set @SQL = @SQL + N'select top 1 @EDUCATIONALHISTORYID, ATTRIBUTEITEM.VALUE, ATTRIBUTEITEM.CURRENCYID, CURRENCYVALUES.ORGANIZATIONEXCHANGERATEID, CURRENCYVALUES.ORGANIZATIONAMOUNT, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE ';
                                                                    set @SQL = @SQL + N'from (select top 1 VALUE, CURRENCYID from dbo.UFN_BBNC_ATTRIBUTES_FROMITEMLISTXML(@XMLITEMS) where [ATTRIBUTETYPEID] = @ATTRIBUTETYPEID) as ATTRIBUTEITEM ';
                                                                    set @SQL = @SQL + N'outer apply dbo.UFN_CURRENCY_GETCURRENCYVALUES_2(VALUE, @CHANGEDATE, CURRENCYID, null, null, null, null, null, null, 1) as CURRENCYVALUES';
                                                                end
                                                            else
                                                                begin
                                                                    set @SQL = @SQL + N'[VALUE], ';
                                                                    set @SQL = @SQL + N'ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED) ';
                                                                    set @SQL = @SQL + N'select top 1 @EDUCATIONALHISTORYID, VALUE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE from dbo.UFN_BBNC_ATTRIBUTES_FROMITEMLISTXML(@XMLITEMS) where [ATTRIBUTETYPEID] = @ATTRIBUTETYPEID';
                                                                end;
                                                            set @PARAMS = N'@EDUCATIONALHISTORYID uniqueidentifier, @CHANGEAGENTID uniqueidentifier, @CHANGEDATE datetime, @XMLITEMS xml, @ATTRIBUTETYPEID int';

                                                            exec sp_executesql @SQL, @PARAMS, @EDUCATIONALHISTORYID = @EDUCATIONALHISTORYID, @CHANGEAGENTID = @CHANGEAGENTID, @CHANGEDATE = @CHANGEDATE, @XMLITEMS = @XMLITEMS, @ATTRIBUTETYPEID = @ATTRIBUTETYPEID;
                                                        end;
                                            end
                                        else
                                            begin
                                                -- Add any attribute values that don't exist yet

                                                set @SQL = N'insert into dbo.' + @TABLENAME + N' (ID, EDUCATIONALHISTORYID, ';
                                                if @ISCODETABLE = 1
                                                    begin
                                                        set @SQL = @SQL + @CODETABLENAME + N'ID, ';
                                                        set @SQL = @SQL + N'ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED) select newid(), @EDUCATIONALHISTORYID, TABLEENTRYID, ';
                                                    end

                                                else if @ISYESNO = 1
                                                    begin
                                                        set @SQL = @SQL + N'[BOOLEANCODE], ';
                                                        set @SQL = @SQL + N'ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED) select newid(), @EDUCATIONALHISTORYID, [BOOLEANCODE], ';
                                                    end

                                                else
                                                    begin
                                                        set @SQL = @SQL + N'[VALUE], ';
                                                        set @SQL = @SQL + N'ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED) select newid(), @EDUCATIONALHISTORYID, [VALUE], ';
                                                    end;
                                                set @SQL = @SQL + N'@CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE ';
                                                set @SQL = @SQL + N'from dbo.UFN_BBNC_ATTRIBUTES_FROMITEMLISTXML(@XMLITEMS) as NEWVALUES where [ATTRIBUTETYPEID] = @ATTRIBUTETYPEID ';
                                                set @SQL = @SQL + N'and not exists (select ID from dbo.' + @TABLENAME + N' where EDUCATIONALHISTORYID = @EDUCATIONALHISTORYID and ';
                                                if @ISCODETABLE = 1
                                                    set @SQL = @SQL + @CODETABLENAME + N'ID = NEWVALUES.TABLEENTRYID)';
                                                else if @ISYESNO = 1
                                                    set @SQL = @SQL + @TABLENAME + N'.[BOOLEANCODE] = NEWVALUES.[BOOLEANCODE])';
                                                else
                                                    set @SQL = @SQL + @TABLENAME + N'.[VALUE] = NEWVALUES.[VALUE])';
                                                set @SQL = @SQL + N' and ';
                                                if @ISCODETABLE = 1
                                                    set @SQL = @SQL + N'NEWVALUES.TABLEENTRYID';
                                                else if @ISYESNO = 1
                                                    set @SQL = @SQL + N'NEWVALUES.[BOOLEANCODE]';
                                                else
                                                    set @SQL = @SQL + N'NEWVALUES.[VALUE]';
                                                set @SQL = @SQL + N' is not null ';

                                                set @PARAMS = N'@EDUCATIONALHISTORYID uniqueidentifier, @CHANGEAGENTID uniqueidentifier, @CHANGEDATE datetime, @XMLITEMS xml, @ATTRIBUTETYPEID int';

                                                exec sp_executesql @SQL, @PARAMS, @EDUCATIONALHISTORYID = @EDUCATIONALHISTORYID, @CHANGEAGENTID = @CHANGEAGENTID, @CHANGEDATE = @CHANGEDATE, @XMLITEMS = @XMLITEMS, @ATTRIBUTETYPEID = @ATTRIBUTETYPEID;

                                                -- Remove attribute values that no longer exist

                                                set @SQL = N'delete from dbo.' + @TABLENAME + N' where EDUCATIONALHISTORYID = @EDUCATIONALHISTORYID and ';
                                                if @ISCODETABLE = 1
                                                    set @SQL = @SQL + @CODETABLENAME + N'ID not in (select [TABLEENTRYID] ';
                                                else if @ISYESNO = 1
                                                     set @SQL = @SQL + N'[BOOLEANCODE] not in (select [BOOLEANCODE] ';
                                                else
                                                    set @SQL = @SQL + N'[VALUE] not in (select [VALUE] ';
                                                set @SQL = @SQL + N'from dbo.UFN_BBNC_ATTRIBUTES_FROMITEMLISTXML(@XMLITEMS) where ATTRIBUTETYPEID = @ATTRIBUTETYPEID and ';
                                                if @ISCODETABLE = 1
                                                    set @SQL = @SQL + N'[TABLEENTRYID]';
                                                else if @ISYESNO = 1
                                                     set @SQL = @SQL + N'[BOOLEANCODE]';
                                                else
                                                    set @SQL = @SQL + N'[VALUE]';
                                                set @SQL = @SQL + N' is not null)';

                                                set @PARAMS = N'@EDUCATIONALHISTORYID uniqueidentifier, @XMLITEMS xml, @ATTRIBUTETYPEID int';

                                                exec sp_executesql @SQL, @PARAMS, @EDUCATIONALHISTORYID = @EDUCATIONALHISTORYID, @XMLITEMS = @XMLITEMS, @ATTRIBUTETYPEID = @ATTRIBUTETYPEID;
                                            end;

                                        set @ROWCOUNT = @ROWCOUNT + 1;
                                    end;
                            end try
                            begin catch
                                exec dbo.USP_RAISE_ERROR;
                                return 1;
                            end catch
                        end

                    return 0;