возврат varchar (MAX) из функции возвращает усеченную строку - PullRequest
2 голосов
/ 05 января 2010

У меня странная проблема. У меня есть функция, которая возвращает большую строку путем объединения нескольких других строк.

В некоторых случаях строка слишком длинная и усекается.

Например, есть случай, когда предполагается, что строка длиной 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

Ответы [ 3 ]

3 голосов
/ 05 января 2010

Существует ли причина, по которой вы не можете вернуть строки и конкатенацию в коде?

Вы смешиваете varchar и nvarchar.

Также вам необходимо использовать Собственный клиент SQL чтобы можно было использовать varchar (max) в качестве возвращаемого значения.

1 голос
/ 01 сентября 2010

В Crystal Reports есть ошибка, которая заставляет его интерпретировать поля varchar (max) как varchar (255)

см. Здесь: http://www.crystalreportsbook.com/Forum/forum_posts.asp?TID=5843&PID=17503

1 голос
/ 05 января 2010

функция действительно возвращает строчку больше чем 65536 символов, я использовал функцию LEN и обнаружил, что длина намного больше. Это была сетка, которая ограничивала длину. Теперь мне нужно выяснить, почему отчет Crystal обрезает строку. Огромное спасибо Джонасу:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...