Вы должны использовать sp_executesql
.Поддерживает nvarchar (max).Вы можете сослаться на здесь
Но ваша проблема не столько в sp_execute
, сколько в строке @b
.Если вы заметили, следующий запрос дает len 8036, а не 10036
SELECT len(@a+@b+@c)
Преступник @b=replicate('a',10000)
максимальная длина при 8000. Replicate возвращает тот же тип данных a
, что varchar
если вы приведете или преобразуете () строку a
в nvarchar (max), она даст вам 1000 символов
@b = replicate(convert(nvarchar(max), 'a'),10000)
, или вы также можете попробовать это
declare @d nvarchar(max)
select @d = 'a'
select @b = replicate(@d, 10000)
select len(@b)