У меня есть таблица, содержащая большое количество строк. В каждой строке есть 2 столбца, которые мне нужно использовать - первый - это HTML-форматирование, а второй - текст. Мне нужно объединить все эти строки в одно строковое значение, чтобы я мог отправить эту массивную строку по электронной почте. Из-за большого количества строк я не могу использовать переменную VARCHAR - я должен использовать текст. Текущее решение состоит в том, чтобы использовать курсор для чтения всех строк, а затем вставить во временную таблицу с одним столбцом типа text, а затем просто добавить к одной строке в этой таблице.
Проблема в том, что строка выглядит обрезанной после примерно 33000 символов. Я понятия не имею, почему это происходит.
РЕДАКТИРОВАТЬ: Я воспользовался некоторыми советами из ответов, приведенных здесь, и изменил решение для использования VARCHAR (MAX). Однако я все еще получаю отсечение, но очень странным образом. Не похоже, что переменная переполняется, просто не добавляются все значения.
DECLARE @Result VARCHAR(MAX)
SET @Result = ''
SELECT @Result = @Result + ltrim(isnull(format,'')) + ' ' + text + '<BR></TD></TR><TR><TD CLASS="GEN" align="left" BGCOLOR="#E9ECFD">'
FROM SomeTable
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * является странным то, что, если я уберу бит, куда добавляю все эти html в конце строки, все будет работать нормально. Я даже сначала вставил все в таблицу tmp, а затем выбрал эту конкатенацию - все равно не повезло. Таблица tmp содержит правильные значения (включая html), но последняя переменная - нет.