У меня странная проблема. У меня есть функция, которая возвращает большую строку путем объединения нескольких других строк.
В некоторых случаях строка слишком длинная и усекается.
Например, есть случай, когда предполагается, что строка длиной 379999 должна быть возвращена, но я вижу, что строка усекается и длина составляет только 65536.
Я уверен, что varchar (MAX) может содержать строку больше 65536, но где я тут ошибаюсь? Функция была показана ниже.
[UPDATE]
эта функция используется в нескольких хранимых процедурах, а хранимые процедуры используются отчетами Crystal для отображения данных.
[ОБНОВЛЕНИЕ КОНЦА]
ALTER FUNCTION [dbo].[GetShipContSernText](
@shipContNum numeric(9)) returns Varchar(MAX) begin
declare serns cursor for
select
serial_number
from
serial_number_view
where
ship_cont_num = @shipContNum
and
template_id is null
open serns;
declare @text varchar(MAX);
declare @serialNumber nvarchar(50);
fetch next from serns into @serialNumber;
while (@@FETCH_STATUS = 0)
begin
-- cannot concat a null string.
if (@text is null)
set @text = @serialNumber;
else
set @text = @text + N', ' + @serialNumber;
end
fetch next from serns into @serialNumber;
end;
close serns;
deallocate serns;
return @text;
end