2016-12-27 11 views
0

電子メール本文をhtml形式で作成するスクリプトがあり、sp_send_dbmailで送信できるようになっています。非常に長いvarchar/nvarchar変数を扱う?

私は3つの変数:@tableHTML1 varchar(8000),@tableHTML2 varchar(8000),@tableHtmlComplete varchar(max)を持っています。

TSQLスクリプトが実行された後、@tableHTML1のlenは@tableHTML2sp_send_dbmail@bodyパラメータは1つの変数のみを受け取ることができますので、私はset @tableHtmlComplete = @tableHTML1 + @tableHTML2をやってしまった4594.で、4768です。残念ながら、@tableHtmlCompleteのlenはvarchar変数の最大サイズなので8000です。

この場合、私は何ができますか?私は@ tableHTML1と@ tableHTML2の内容を電子メールで送る必要があります。

私が上にしようとしていることが実行可能でない場合、私は別の解決策を検討します。

ありがとうございました。

+4

8000バイトは最大サイズではありません。 VARCHAR(max)は2GBのデータを保持できます。 – dfundako

+0

それで、なぜ8000バイトでテキストをカットするのですか? – rbhat

+2

バイトが噛んでいません。そして、http://stackoverflow.com/questions/12639948/sql-nvarchar-and-varchar-limits/12639972#12639972 –

答えて

4

それらを連結する前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

0

:あなたがそうのようなvarchar型(最大)にちょうど最初の値を変換することによってLamakのソリューションを簡素化することができます。

SET @tableHtmlComplete = CONVERT(VARCHAR(MAX),@tableHTML1) + @tableHTML2; 
関連する問題