0

我正在使用 dbmail 收集数据并发送电子邮件。作为该电子邮件的一部分,我有一个围绕文本的 url,用于指向带有参数的 SSRS 报告的可点击链接。如果我只有一个参数,我很好。但是,如果我添加参数,则传递 url 时将 & 号替换为“and”。我已经尝试过文本 &、char(38) 和文本 %26,它通过将其转换为单词“and”来解析它。

例如,如果 url 使用

declare @MySQL as varchar(max)='<table><tr><td>
<a href=' + char(39) + 'https://blah/Reports_SSRS/report/subfolder1/Subfolder%20Stuff/report%20Name?svcMeasure=' + cast(met.measureID as varchar(2)) + '&svcProv=' + z.abbrv + char(39) +'>' + measureTitle + '</a></td></tr></table>'

呈现的是 https://blah/reports_ssrs/report/subfolder1/subfolder stuff/report name?svcMeasure=8andsvcProv=brown'>my measure

     set @tableHTML = @tableHTML + 
 N'<table border="1" cellspacing="1" cellpadding="2"><tr><td colspan="5" bgcolor="#68cbd0"><b>Table Title</b> </td></tr>' +
 CAST((SELECT  case when rs2.myBG='a' then '#F0FFF0' else '#FFC0CB' end  as [@bgcolor], 
 td  = cast(rs2.measureUrl as xml), '',  
 'center' as 'td/@align',td = '(of '+ convert(varchar(5),rs2.myPeerCount) +')',''  
 from (blah blah blah)rs2 FOR XML PATH('tr'), TYPE) AS NVARCHAR(MAX) ) +  N'</table>';
4

2 回答 2

0

使用&amp;html 版本代替&

    declare @MySQL as varchar(max)='<table><tr><td>
    <a href=' + char(39) + 'https://blah/Reports_SSRS/report/subfolder1/Subfolder%20Stuff/report%20Name?svcMeasure=' + cast(met.measureID as varchar(2)) + '&amp;svcProv=' + z.abbrv + char(39) +'>' + measureTitle + '</a></td></tr></table>'
于 2018-10-10T20:30:51.393 回答
0

我最终要做的是创建 url,但跳过参数之间的 &

http://tada/folder/reportName?param1=blahparam2=blah

然后将其解析为 html

td=cast(replace(rs2.measureUrl,'&','and') as xml), '',

然后就在我发送 dbMail 之前,执行此操作

设置@tableHTML=replace(@tableHTML,'param2','¶m2=')

可能不是犹太洁食,但它有效!

于 2018-10-11T18:03:11.453 回答