USP_GLOBALCHANGE_ADDORCHANGEEVENTATTRIBUTE

Parameters

Parameter Parameter Type Mode Description
@SELECTEDEVENTS xml IN
@ATTRIBUTECATEGORYID uniqueidentifier IN
@STRINGVALUE nvarchar(250) IN
@NUMBERVALUE int IN
@MONEYVALUE money IN
@CURRENCYID uniqueidentifier IN
@DATEVALUE datetime IN
@BOOLEANVALUE bit IN
@CODETABLEVALUE uniqueidentifier IN
@FUZZYDATEVALUE UDT_FUZZYDATE IN
@CONSTITUENTIDVALUE uniqueidentifier IN
@HOURMINUTEVALUE UDT_HOURMINUTE IN
@MEMOVALUE nvarchar(max) IN
@COMMENT nvarchar(255) IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@RULESFOREXISTINGVALUES tinyint IN
@CHANGEAGENTID uniqueidentifier IN
@ASOF datetime IN
@NUMBERADDED int INOUT
@NUMBEREDITED int INOUT
@NUMBERDELETED int INOUT
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_GLOBALCHANGE_ADDORCHANGEEVENTATTRIBUTE
(
  @SELECTEDEVENTS xml = null,
  @ATTRIBUTECATEGORYID uniqueidentifier,
  @STRINGVALUE nvarchar(250) = null,
  @NUMBERVALUE int = null,
  @MONEYVALUE money = null,
  @CURRENCYID uniqueidentifier = null,
  @DATEVALUE datetime = null,
  @BOOLEANVALUE bit = null,
  @CODETABLEVALUE uniqueidentifier = null,
  @FUZZYDATEVALUE udt_fuzzydate = null,
  @CONSTITUENTIDVALUE uniqueidentifier = null,
  @HOURMINUTEVALUE udt_hourminute = null,
  @MEMOVALUE nvarchar(max) = null,
  @COMMENT nvarchar(255) = null,
  @STARTDATE datetime = null,
  @ENDDATE datetime = null,
  @RULESFOREXISTINGVALUES tinyint = 0,
  @CHANGEAGENTID uniqueidentifier = null,
  @ASOF as datetime = null,
  @NUMBERADDED int = 0 output,
  @NUMBEREDITED int = 0 output,
  @NUMBERDELETED int = 0 output,
  @CURRENTAPPUSERID uniqueidentifier = null
)
as
  set nocount off;

  /*
  @RULESFOREXISTINGVALUES
  0: Do not update or add attribute
  1: Update existing attribute value
  2: Add new attribute
  */

  declare @DATATYPE int
  declare @ATTRIBUTETABLENAME nvarchar(128)
  declare @INSERTSQL nvarchar(max)
  declare @UPDATESQL nvarchar(max)
  declare @PARAMETERDEFINITION nvarchar(500)
  declare @CURRENTDATE datetime;
  declare @ONEPERRECORD bit
  declare @VALUECOLUMNNAME nvarchar(128)

  set @CURRENTDATE = getdate();
  set @NUMBERADDED = 0;
  set @NUMBEREDITED = 0;
  set @NUMBERDELETED = 0;

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

  --Find the table name and data type for the attribute category
  select 
      @DATATYPE = ATTRIBUTECATEGORY.DATATYPECODE, 
      @ATTRIBUTETABLENAME = TABLECATALOG.TABLENAME, 
      @ONEPERRECORD = ATTRIBUTECATEGORY.ONLYALLOWONEPERRECORD,
      @VALUECOLUMNNAME = ATTRIBUTECATEGORY.VALUECOLUMNNAME
  from 
      dbo.ATTRIBUTECATEGORY
      inner join dbo.TABLECATALOG on TABLECATALOG.ID = ATTRIBUTECATEGORY.TABLECATALOGID 
  where 
      ATTRIBUTECATEGORY.ID = @ATTRIBUTECATEGORYID;

  /* Definitions for common parameters */
  set @PARAMETERDEFINITION = '@COMMENTPARAMETER nvarchar(255), @STARTDATEPARAMETER datetime, @ENDDATEPARAMETER datetime, @CHANGEAGENTIDPARAMETER uniqueidentifier, @CURRENTDATEPARAMETER datetime, @SELECTEDEVENTSPARAMETER xml, @CURRENTAPPUSERIDPARAMETER uniqueidentifier';
  if @DATATYPE = 3
    set @PARAMETERDEFINITION = '@CURRENCYIDPARAMETER uniqueidentifier, ' + @PARAMETERDEFINITION;

  /* SQLs for specific events */
  if @ONEPERRECORD = 1    
    begin
      set @INSERTSQL = 'insert into dbo.[' + @ATTRIBUTETABLENAME + '] (ID, ' + @VALUECOLUMNNAME + ', ';

      if @DATATYPE = 3
        set @INSERTSQL = @INSERTSQL + 'CURRENCYID, ';

      set @INSERTSQL = @INSERTSQL + 'COMMENT, STARTDATE, ENDDATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED) select EVENTCOLLECTION.EVENTID, @VALUEPARAMETER, ';

      if @DATATYPE = 3
        set @INSERTSQL = @INSERTSQL + '@CURRENCYIDPARAMETER, ';

      set @INSERTSQL = @INSERTSQL + '@COMMENTPARAMETER, @STARTDATEPARAMETER, @ENDDATEPARAMETER, @CHANGEAGENTIDPARAMETER, @CHANGEAGENTIDPARAMETER, @CURRENTDATEPARAMETER, @CURRENTDATEPARAMETER from dbo.UFN_GLOBALCHANGE_GETEVENTLIST_FROMITEMLISTXML(@SELECTEDEVENTSPARAMETER) as EVENTCOLLECTION';

      /* filter out results with site security check */
      set @INSERTSQL = @INSERTSQL + ' WHERE exists( select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(EVENTCOLLECTION.EVENTID) EVENTSITE where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERIDPARAMETER) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERIDPARAMETER,''800093A6-B727-490B-8CC4-C0C0CF2148F0'',20) where SITEID=[EVENTSITE].[SITEID] or (SITEID is null and [EVENTSITE].[SITEID] is null))))'

      /* We don't want to add a duplicate attribute value so we need to check if the value already exists before inserting the record. */
      set @INSERTSQL = @INSERTSQL + ' AND EVENTCOLLECTION.EVENTID not in(select ID from dbo.[' + @ATTRIBUTETABLENAME + '])';

      /* If overwriting the exiting value we must only insert records that don't already exist in the attribute table */
      if @RULESFOREXISTINGVALUES = 1
        begin
          set @UPDATESQL = 'update dbo.[' + @ATTRIBUTETABLENAME + '] set ' + @VALUECOLUMNNAME + ' = @VALUEPARAMETER, ';

          if @DATATYPE = 3
            set @UPDATESQL = @UPDATESQL + 'CURRENCYID = @CURRENCYIDPARAMETER, ';

          set @UPDATESQL = @UPDATESQL + 'COMMENT = @COMMENTPARAMETER, STARTDATE = @STARTDATEPARAMETER, ENDDATE = @ENDDATEPARAMETER, CHANGEDBYID = @CHANGEAGENTIDPARAMETER, DATECHANGED = @CURRENTDATEPARAMETER where [' + @ATTRIBUTETABLENAME + '].ID in';
          /* get the selected events from the XML document and filter out those events that the given user does not have access to (based on feature/site security) */
          set @UPDATESQL = @UPDATESQL + ' (select EVENTCOLLECTION.EVENTID from dbo.UFN_GLOBALCHANGE_GETEVENTLIST_FROMITEMLISTXML(@SELECTEDEVENTSPARAMETER) as EVENTCOLLECTION WHERE exists( select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(EVENTCOLLECTION.EVENTID) EVENTSITE where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERIDPARAMETER) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERIDPARAMETER,''800093A6-B727-490B-8CC4-C0C0CF2148F0'',20) where SITEID=[EVENTSITE].[SITEID] or (SITEID is null and [EVENTSITE].[SITEID] is null)))))';
        end
    end
  /* Multi-record value type */
  else
    begin
      set @INSERTSQL = 'insert into dbo.[' + @ATTRIBUTETABLENAME + '] (ID, EVENTID, ' + @VALUECOLUMNNAME + ', ';

      if @DATATYPE = 3
        set @INSERTSQL = @INSERTSQL + 'CURRENCYID, ';

      set @INSERTSQL = @INSERTSQL + 'COMMENT, STARTDATE, ENDDATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED) select newid(), EVENTCOLLECTION.EVENTID, @VALUEPARAMETER, ';

      if @DATATYPE = 3
        set @INSERTSQL = @INSERTSQL + '@CURRENCYIDPARAMETER, ';

      set @INSERTSQL = @INSERTSQL + '@COMMENTPARAMETER, @STARTDATEPARAMETER, @ENDDATEPARAMETER, @CHANGEAGENTIDPARAMETER, @CHANGEAGENTIDPARAMETER, @CURRENTDATEPARAMETER, @CURRENTDATEPARAMETER from dbo.UFN_GLOBALCHANGE_GETEVENTLIST_FROMITEMLISTXML(@SELECTEDEVENTSPARAMETER) as EVENTCOLLECTION';

      /* filter out results with site security check */
      set @INSERTSQL = @INSERTSQL + ' WHERE exists( select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(EVENTCOLLECTION.EVENTID) EVENTSITE where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERIDPARAMETER) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERIDPARAMETER,''800093A6-B727-490B-8CC4-C0C0CF2148F0'',20) where SITEID=[EVENTSITE].[SITEID] or (SITEID is null and [EVENTSITE].[SITEID] is null))))'

      /* For rules #0 and #1, we don't want to add a duplicate attribute value so we need to check if the value already exists before inserting the record. */
      if @RULESFOREXISTINGVALUES <> 2
        set @INSERTSQL = @INSERTSQL + ' and EVENTCOLLECTION.EVENTID not in(select EVENTID from dbo.[' + @ATTRIBUTETABLENAME + '])'

      /* If overwriting the exiting value we must only insert records that don't already exist in the attribute table */
      if @RULESFOREXISTINGVALUES = 1 
        begin
          set @UPDATESQL = 'update dbo.[' + @ATTRIBUTETABLENAME + '] set ' + @VALUECOLUMNNAME + ' = @VALUEPARAMETER, ';

          if @DATATYPE = 3
            set @UPDATESQL = @UPDATESQL + 'CURRENCYID = @CURRENCYIDPARAMETER, ';

          set @UPDATESQL = @UPDATESQL + 'COMMENT = @COMMENTPARAMETER, STARTDATE = @STARTDATEPARAMETER, ENDDATE = @ENDDATEPARAMETER, CHANGEDBYID = @CHANGEAGENTIDPARAMETER, DATECHANGED = @CURRENTDATEPARAMETER where [' + @ATTRIBUTETABLENAME + '].EVENTID in';
          /* get the selected events from the XML document and filter out those events that the given user does not have access to (based on feature/site security) */
          set @UPDATESQL = @UPDATESQL + ' (select EVENTCOLLECTION.EVENTID from dbo.UFN_GLOBALCHANGE_GETEVENTLIST_FROMITEMLISTXML(@SELECTEDEVENTSPARAMETER) as EVENTCOLLECTION WHERE exists( select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(EVENTCOLLECTION.EVENTID) EVENTSITE where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERIDPARAMETER) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERIDPARAMETER,''800093A6-B727-490B-8CC4-C0C0CF2148F0'',20) where SITEID=[EVENTSITE].[SITEID] or (SITEID is null and [EVENTSITE].[SITEID] is null)))))';
        end
    end

    /* Build the parameter definitions based on value type and execute SQLs by passing in different value variable */
    begin try
      if @DATATYPE = 0 --Text
        begin
          set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUEPARAMETER nvarchar(250)';

          if @UPDATESQL <> '' 
            begin
              exec sp_executesql @UPDATESQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @STRINGVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
              set @NUMBEREDITED = @@ROWCOUNT;
            end

          exec sp_executesql @INSERTSQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @STRINGVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
          set @NUMBERADDED = @@ROWCOUNT;
        end

      else if @DATATYPE = 1  --Number
        begin
          set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUEPARAMETER int';

           if @UPDATESQL <> '' 
            begin
              exec sp_executesql @UPDATESQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @NUMBERVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
              set @NUMBEREDITED = @@ROWCOUNT;
            end

          exec sp_executesql @INSERTSQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @NUMBERVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
          set @NUMBERADDED = @@ROWCOUNT;         
        end

       else if @DATATYPE = 2  --Date
        begin
          set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUEPARAMETER datetime';

           if @UPDATESQL <> '' 
            begin
              exec sp_executesql @UPDATESQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @DATEVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
              set @NUMBEREDITED = @@ROWCOUNT;
            end

          exec sp_executesql @INSERTSQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @DATEVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
          set @NUMBERADDED = @@ROWCOUNT;         
        end

      else if @DATATYPE = 3  --Currency
        begin
          set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUEPARAMETER money';

            if @UPDATESQL <> '' 
            begin
              exec sp_executesql @UPDATESQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @MONEYVALUE, @CURRENCYIDPARAMETER = @CURRENCYID, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
              set @NUMBEREDITED = @@ROWCOUNT;
            end

          exec sp_executesql @INSERTSQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @MONEYVALUE, @CURRENCYIDPARAMETER = @CURRENCYID, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
          set @NUMBERADDED = @@ROWCOUNT;
        end

      else if @DATATYPE = 4 --Boolean
        begin
          set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUEPARAMETER bit';

             if @UPDATESQL <> '' 
            begin
              exec sp_executesql @UPDATESQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @BOOLEANVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
              set @NUMBEREDITED = @@ROWCOUNT;
            end

          exec sp_executesql @INSERTSQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @BOOLEANVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
          set @NUMBERADDED = @@ROWCOUNT;         
        end    

      else if @DATATYPE = 5 --CodeTable
        begin
          set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUEPARAMETER uniqueidentifier';

             if @UPDATESQL <> '' 
            begin
              exec sp_executesql @UPDATESQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @CODETABLEVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
              set @NUMBEREDITED = @@ROWCOUNT;
            end

          exec sp_executesql @INSERTSQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @CODETABLEVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
          set @NUMBERADDED = @@ROWCOUNT;         
        end    

      else if @DATATYPE = 6 --ConstituentRecord
        begin
          set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUEPARAMETER uniqueidentifier';

             if @UPDATESQL <> '' 
            begin
              exec sp_executesql @UPDATESQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @CONSTITUENTIDVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
              set @NUMBEREDITED = @@ROWCOUNT;
            end

          exec sp_executesql @INSERTSQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @CONSTITUENTIDVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
          set @NUMBERADDED = @@ROWCOUNT;         
   end           

       else if @DATATYPE = 7 --FuzzyDate
        begin
          set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUEPARAMETER udt_fuzzydate';

             if @UPDATESQL <> '' 
            begin
              exec sp_executesql @UPDATESQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @FUZZYDATEVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
              set @NUMBEREDITED = @@ROWCOUNT;
            end

          exec sp_executesql @INSERTSQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @FUZZYDATEVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
          set @NUMBERADDED = @@ROWCOUNT;         
        end

       else if @DATATYPE = 8 --Time
        begin
          set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUEPARAMETER udt_hourminute';

             if @UPDATESQL <> '' 
            begin
              exec sp_executesql @UPDATESQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @HOURMINUTEVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
              set @NUMBEREDITED = @@ROWCOUNT;
            end

          exec sp_executesql @INSERTSQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @HOURMINUTEVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
          set @NUMBERADDED = @@ROWCOUNT;         
        end

       else if @DATATYPE = 9 --Memo
        begin
          set @PARAMETERDEFINITION = @PARAMETERDEFINITION + ', @VALUEPARAMETER nvarchar(max)';

             if @UPDATESQL <> '' 
            begin
              exec sp_executesql @UPDATESQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @MEMOVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
              set @NUMBEREDITED = @@ROWCOUNT;
            end

          exec sp_executesql @INSERTSQL, @PARAMETERDEFINITION, @COMMENTPARAMETER = @COMMENT, @STARTDATEPARAMETER = @STARTDATE, @ENDDATEPARAMETER = @ENDDATE, @CHANGEAGENTIDPARAMETER = @CHANGEAGENTID, @CURRENTDATEPARAMETER = @CURRENTDATE, @SELECTEDEVENTSPARAMETER=@SELECTEDEVENTS, @VALUEPARAMETER = @MEMOVALUE, @CURRENTAPPUSERIDPARAMETER=@CURRENTAPPUSERID;
          set @NUMBERADDED = @@ROWCOUNT;         
        end                      
    end try

    begin catch
        exec dbo.USP_RAISE_ERROR;
        return 1;
    end catch