UFN_ENCRYPT_TEXTTOXML
Return
Return Type |
---|
xml |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PLAINTEXT | nvarchar(max) | IN |
Definition
Copy
CREATE function dbo.UFN_ENCRYPT_TEXTTOXML
(
@PLAINTEXT nvarchar(max)
)
returns xml
as begin
--Although max length is 4000 but while testing exact max length in SQL Server 2014 is 3971
--After that text gets truncated by EncryptByKey function so for safe side taking 3900 as max base value
declare @LINEBREAK int = 3900;
declare @ENCRYPTEDSEGMENT varbinary(max);
declare @LINE int = 0;
declare @PLAINSEGMENT nvarchar(max);
declare @SEGMENTSTABLE table (LINE int, PLAINTEXT nvarchar(max), ENCRYPTEDTEXT varbinary(max));
declare @XML xml;
while len(@PLAINTEXT) > 0
begin
set @LINE = @LINE + 1;
set @PLAINSEGMENT = left(@PLAINTEXT, @LINEBREAK);
set @ENCRYPTEDSEGMENT = EncryptByKey(Key_GUID('sym_BBInfinity'), @PLAINSEGMENT);
insert into @SEGMENTSTABLE (LINE, PLAINTEXT, ENCRYPTEDTEXT) values (@LINE, @PLAINSEGMENT, @ENCRYPTEDSEGMENT);
set @PLAINTEXT = SUBSTRING(@PLAINTEXT, @LINEBREAK + 1, len(@PLAINTEXT));
end
set @XML =
(
select
LINE as '@sequence',
ENCRYPTEDTEXT as '*'
from @SEGMENTSTABLE
order by LINE
for xml path ('segment'), root ('segments')
);
return @XML;
end