我遇到了一个奇怪的问题。我有一个函数,它通过连接其他几个字符串来返回一个大字符串。
在某些情况下,字符串太长而且会被截断。
例如,有一个实例,当一个长度为379999的字符串应该返回时,但我看到的是字符串被截断,长度只有65536.
我确信varchar(MAX)可以容纳一个大于65536的字符串,但我在哪里错了?该功能如下所示。
[UPDATE]
此函数正在多个存储过程中使用,并且水晶报告使用存储过程来显示数据。
[更新结束]
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
答案 0 :(得分:3)
答案 1 :(得分:1)
该函数确实返回超过65536个字符的sting,我使用LEN函数并发现长度要大得多。这是限制长度的网格。现在我需要找到为什么水晶报告截断字符串。 感谢Jonas:)
答案 2 :(得分:1)
Crystal Reports中存在一个错误,它将varchar(max)字段解释为varchar(255)
见这里:http://www.crystalreportsbook.com/Forum/forum_posts.asp?TID=5843&PID=17503