私はこれをやろうとしています:
DECLARE @myVar VARCHAR(MAX)
Loop with cursor
select @myVar = @myVar + bla bla bla
end loop
ループが終了すると、@ myVarは不完全になり、8000文字しか含まれません。
テキストを使用しようとしましたが、ローカル変数を使用できません。
この場合の良い解決策は何でしょうか?
xml var?
私はこの投稿を見たところです:
SQL Server 2000でvarchar(8000)より大きい文字列パラメータを渡すにはどうすればよいですか?
varchar(max)に連結すると最大許容文字数を超えるかどうかを確認します
そして、ウェブを介して他の人。
よろしく。
真剣に-VARCHAR(MAX)
は、8000文字だけでなく、最大2 GBのデータを保存できます。
これを試して:
_DECLARE @myVar VARCHAR(MAX) = ''
DECLARE @ix INT = 1
WHILE @ix < 1000
BEGIN
set @myVar = @myVar + CAST('bla bla bla' AS VARCHAR(MAX))
SET @ix = @ix + 1
END
SELECT DATALENGTH(@myvar)
_
これは、1000回の反復後に値higher 8000文字よりも多くを返します。
重要な点は、varchar(max)
を使用している場合は、常にcastすべての文字列を明示的にvarchar(max)
に明示的に指定する必要があります。例。そうしないと、SQL Serverは「通常の」varchar
処理にフォールバックし、実際には8000文字に制限されます。