我们有一个脚本,它以html格式创建电子邮件正文,以便它可以与sp_send_dbmail一起发送。
所以我有三个变量:@tableHTML1 varchar(8000),@tableHTML2 varchar(8000),@tableHtmlComplete varchar(max)。
执行tsql脚本后,@tableHTML1的len为4768,@tableHTML2为4594。由于@body参数sp_send_dbmail只能接收一个变量,所以我最终执行了set @tableHtmlComplete = @tableHTML1 + @tableHTML2。不幸的是,@tableHtmlComplete的len是8000,因为这是varchar变量的最大大小。
那么在这种情况下我能做什么呢?我需要给@tableHTML2 1加上@tableHTML2 2的内容发电子邮件。
我只会考虑另一个解决方案,如果我试图做的上面是不可行的。
谢谢。
发布于 2016-12-27 20:10:26
在连接它们之前将它们转换为varchar(max):
DECLARE @tableHTML1 varchar(8000), @tableHTML2 varchar(8000), @tableHtmlComplete varchar(max)
SET @tableHTML1 = REPLICATE('a',4768);
SET @tableHTML2 = REPLICATE('a',4594);
SET @tableHtmlComplete = CONVERT(VARCHAR(MAX),@tableHTML1) + CONVERT(VARCHAR(MAX),@tableHTML2);
SELECT DATALENGTH(@tableHtmlComplete);结果: 9362
发布于 2016-12-27 23:16:00
另外,您可以简化Lamak的解决方案,只需将第一个值转换为varchar(max),如下所示:
SET @tableHtmlComplete = CONVERT(VARCHAR(MAX),@tableHTML1) + @tableHTML2;https://stackoverflow.com/questions/41351554
复制相似问题