UFN_BATCHBBNCMEMBERSHIP_GETMEMBERS_FROMITEMLISTXML
Converts Blackbaud Internet Solutions batch membership from XML to a table.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@MEMBERSINFO | xml | IN |
Definition
Copy
CREATE function dbo.UFN_BATCHBBNCMEMBERSHIP_GETMEMBERS_FROMITEMLISTXML
(
@MEMBERSINFO xml
)
returns @R table
(
ID uniqueidentifier,
MEMBERID uniqueidentifier,
MEMBERCONSTITUENTID uniqueidentifier,
MEMBERISPRIMARY bit,
MEMBERUPDATEADDRESS bit,
MEMBERADDADDRESS bit,
MEMBERMAKEADDRESSPRIMARY bit,
MEMBERADDRESSTYPECODEID uniqueidentifier,
MEMBERBIOINFO xml,
MEMBERBIOINFOALL xml,
MEMBERPHONETYPES xml,
MEMBERADDRESSINFO xml,
MEMBERADDRESSINFOALL xml,
SEQUENCE int
)
as
begin
--I had some problems getting the generated FROMITEMLISTXML to handle the nested functions, so I wrote my own.
--There's probably a better way to do this.
insert into @R(ID, MEMBERID, MEMBERCONSTITUENTID, MEMBERISPRIMARY, MEMBERUPDATEADDRESS, MEMBERADDADDRESS, MEMBERMAKEADDRESSPRIMARY, MEMBERADDRESSTYPECODEID, SEQUENCE,
MEMBERBIOINFO, MEMBERBIOINFOALL, MEMBERPHONETYPES,
MEMBERADDRESSINFO, MEMBERADDRESSINFOALL)
select
T.c.value('ID[1]','uniqueidentifier') AS [ID],
T.c.value('MEMBERID[1]','uniqueidentifier') as [MEMBERID],
T.c.value('MEMBERCONSTITUENTID[1]','uniqueidentifier') as [MEMBERCONSTITUENTID],
T.c.value('MEMBERISPRIMARY[1]','bit') as [MEMBERISPRIMARY],
T.c.value('MEMBERUPDATEADDRESS[1]','bit') as [MEMBERUPDATEADDRESS],
T.c.value('MEMBERADDADDRESS[1]','bit') as [MEMBERADDADDRESS],
T.c.value('MEMBERMAKEADDRESSPRIMARY[1]','bit') as [MEMBERMAKEADDRESSPRIMARY],
T.c.value('MEMBERADDRESSTYPECODEID[1]','uniqueidentifier') as [MEMBERADDRESSTYPECODEID],
T.c.value('SEQUENCE[1]','int') as [SEQUENCE],
(
select
S.d.value('PROCESS[1]', 'bit') as [PROCESS],
S.d.value('FIELD[1]', 'nvarchar(max)') as [FIELD],
S.d.value('CHANGEDFROM[1]', 'nvarchar(max)') as [CHANGEDFROM],
S.d.value('NEWVALUE[1]', 'nvarchar(max)') as [NEWVALUE],
S.d.value('CURRENTVALUE[1]', 'nvarchar(max)') as [CURRENTVALUE],
S.d.value('ACTION[1]', 'tinyint') as [ACTION],
S.d.value('FIELDKEY[1]', 'nvarchar(max)') as [FIELDKEY],
S.d.value('DATATYPE[1]', 'smallint') as [DATATYPE],
S.d.value('ATTRIBUTETYPEID[1]', 'int') as [ATTRIBUTETYPEID],
S.d.value('ALLOWMULTIPLES[1]', 'bit') as [ALLOWMULTIPLES],
S.d.value('CODETABLEID[1]', 'int') as [CODETABLEID],
S.d.value('TABLEENTRYIDLIST[1]', 'nvarchar(max)') as [TABLEENTRYIDLIST]
from T.c.nodes('MEMBERBIOINFO/ITEM') S(d)
for xml raw('ITEM'),type,elements,root('MEMBERBIOINFO'),BINARY BASE64
) as [MEMBERBIOINFO],
(
select
S.d.value('PROCESS[1]', 'bit') as [PROCESS],
S.d.value('FIELD[1]', 'nvarchar(max)') as [FIELD],
S.d.value('CHANGEDFROM[1]', 'nvarchar(max)') as [CHANGEDFROM],
S.d.value('NEWVALUE[1]', 'nvarchar(max)') as [NEWVALUE],
S.d.value('CURRENTVALUE[1]', 'nvarchar(max)') as [CURRENTVALUE],
S.d.value('ACTION[1]', 'tinyint') as [ACTION],
S.d.value('FIELDKEY[1]', 'nvarchar(max)') as [FIELDKEY],
S.d.value('DATATYPE[1]', 'smallint') as [DATATYPE],
S.d.value('ATTRIBUTETYPEID[1]', 'int') as [ATTRIBUTETYPEID],
S.d.value('ALLOWMULTIPLES[1]', 'bit') as [ALLOWMULTIPLES],
S.d.value('CODETABLEID[1]', 'int') as [CODETABLEID],
S.d.value('TABLEENTRYIDLIST[1]', 'nvarchar(max)') as [TABLEENTRYIDLIST]
from T.c.nodes('MEMBERBIOINFOALL/ITEM') S(d)
for xml raw('ITEM'),type,elements,root('MEMBERBIOINFOALL'),BINARY BASE64
) as [MEMBERBIOINFOALL],
(
select
S.d.value('FIELDKEY[1]','nvarchar(max)') as [FIELDKEY],
S.d.value('PHONETYPE[1]','nvarchar(max)') as [PHONETYPE],
S.d.value('ISEMAIL[1]','bit') as [ISEMAIL]
from T.c.nodes('MEMBERPHONETYPES/ITEM') S(d)
for xml raw('ITEM'),type,elements,root('MEMBERPHONETYPES'),BINARY BASE64
) as [MEMBERPHONETYPES],
(
select
S.d.value('PROCESS[1]', 'bit') as [PROCESS],
S.d.value('FIELD[1]', 'nvarchar(max)') as [FIELD],
S.d.value('CHANGEDFROM[1]', 'nvarchar(max)') as [CHANGEDFROM],
S.d.value('NEWVALUE[1]', 'nvarchar(max)') as [NEWVALUE],
S.d.value('CURRENTVALUE[1]', 'nvarchar(max)') as [CURRENTVALUE],
S.d.value('ACTION[1]', 'tinyint') as [ACTION],
S.d.value('FIELDKEY[1]', 'nvarchar(max)') as [FIELDKEY],
S.d.value('DATATYPE[1]', 'smallint') as [DATATYPE],
S.d.value('ATTRIBUTETYPEID[1]', 'int') as [ATTRIBUTETYPEID],
S.d.value('ALLOWMULTIPLES[1]', 'bit') as [ALLOWMULTIPLES],
S.d.value('CODETABLEID[1]', 'int') as [CODETABLEID],
S.d.value('TABLEENTRYIDLIST[1]', 'nvarchar(max)') as [TABLEENTRYIDLIST]
from T.c.nodes('MEMBERADDRESSINFO/ITEM') S(d)
for xml raw('ITEM'),type,elements,root('MEMBERADDRESSINFO'),BINARY BASE64
) as [MEMBERADDRESSINFO],
(
select
S.d.value('PROCESS[1]', 'bit') as [PROCESS],
S.d.value('FIELD[1]', 'nvarchar(max)') as [FIELD],
S.d.value('CHANGEDFROM[1]', 'nvarchar(max)') as [CHANGEDFROM],
S.d.value('NEWVALUE[1]', 'nvarchar(max)') as [NEWVALUE],
S.d.value('CURRENTVALUE[1]', 'nvarchar(max)') as [CURRENTVALUE],
S.d.value('ACTION[1]', 'tinyint') as [ACTION],
S.d.value('FIELDKEY[1]', 'nvarchar(max)') as [FIELDKEY],
S.d.value('DATATYPE[1]', 'smallint') as [DATATYPE],
S.d.value('ATTRIBUTETYPEID[1]', 'int') as [ATTRIBUTETYPEID],
S.d.value('ALLOWMULTIPLES[1]', 'bit') as [ALLOWMULTIPLES],
S.d.value('CODETABLEID[1]', 'int') as [CODETABLEID],
S.d.value('TABLEENTRYIDLIST[1]', 'nvarchar(max)') as [TABLEENTRYIDLIST]
from T.c.nodes('MEMBERADDRESSINFOALL/ITEM') S(d)
for xml raw('ITEM'),type,elements,root('MEMBERADDRESSINFOALL'),BINARY BASE64
) as [MEMBERADDRESSINFOALL]
FROM @MEMBERSINFO.nodes('/MEMBERSINFO/ITEM') T(c)
update @R
set MEMBERCONSTITUENTID = null
where MEMBERCONSTITUENTID = '00000000-0000-0000-0000-000000000000';
update @R
set MEMBERADDRESSTYPECODEID = null
where MEMBERADDRESSTYPECODEID = '00000000-0000-0000-0000-000000000000';
return;
end