USP_INSERTSEARCHCONSTITUENT

Parameters

Parameter Parameter Type Mode Description
@TABLENAME nvarchar(128) IN
@CONSTITUENTCOLUMN nvarchar(128) IN
@ROWSCREATED int INOUT

Definition

Copy


CREATE procedure dbo.USP_INSERTSEARCHCONSTITUENT (
  @TABLENAME as nvarchar(128) = null,  -- Null or empty string will repopulate the entire SEARCHCONSTITUENT table.

  @CONSTITUENTCOLUMN as nvarchar(128) = 'CONSTITID',
  @ROWSCREATED int = null output
) as
begin
  declare @SQL nvarchar(max)

  set @SQL =
  'insert into dbo.SEARCHCONSTITUENT (ID,CONSTITUENTID,ADDRESSID,
                                     KEYNAME,FIRSTNAME,MIDDLENAME,NAMETYPECODE,
                                     TITLECODEID,SUFFIXCODEID,
                                     COUNTRYID,POSTCODE,STREETNUMBER,STREETNAME,
                                     ISORGANIZATION,ISGROUP,ALIASID)
  select newid(),
         c.ID,
         a.ID,
         c.KEYNAME,
         c.FIRSTNAME,
         c.MIDDLENAME,
         c.NAMETYPECODE,
         c.TITLECODEID,
         c.SUFFIXCODEID,
         a.COUNTRYID,
         case when ltrim(rtrim(a.POSTCODE)) like ''[0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]'' then left(ltrim(a.POSTCODE),5) else isnull(ltrim(rtrim(a.POSTCODE)),'''') end,
         isnull(PARSEDADDRESS.STREETNUMBER,''''),
         isnull(isnull(PARSEDADDRESS.STREETNAME,ab.CLEANADDRESSBLOCK),''''),
         c.ISORGANIZATION,
         c.ISGROUP,
         c.ALIASID
  from ' +
  case when isnull(@TABLENAME,'') <> '' then @TABLENAME + ' s inner join dbo.V_CONSTITUENTALLNAMES c on c.ID = s.' + @CONSTITUENTCOLUMN
       else 'dbo.V_CONSTITUENTALLNAMES c'
  end +
' left outer join ADDRESS a on a.CONSTITUENTID = c.ID
  outer apply (select ltrim(rtrim(upper(replace(replace(replace(replace(replace(replace(replace(replace(
                       a.ADDRESSBLOCK,''.'',''''),''-'','' ''),'','','' ''),
                       char(13)+char(10),'' ''),char(10)+char(13),'' ''),char(13),'' ''),char(10),'' ''),''  '','' '')))) CLEANADDRESSBLOCK) ab
  outer apply (select left(CLEANADDRESSBLOCK,charindex('' '',CLEANADDRESSBLOCK)-1) STREETNUMBER,
                      right(CLEANADDRESSBLOCK,len(CLEANADDRESSBLOCK)-charindex('' '',CLEANADDRESSBLOCK)) STREETNAME
               where dbo.UFN_REGULAREXPRESSIONMATCH(''(?:^[A-Z]?[\d-]+[A-Z]? (?:.|\n)+$)'',CLEANADDRESSBLOCK) = 1
               and charindex('' '',CLEANADDRESSBLOCK)<=13) PARSEDADDRESS
  where c.KEYNAME<>''''';

  exec sp_executesql @SQL

  set @ROWSCREATED = @@ROWCOUNT
end