游标中定义nvarchar(max)字符拼接超过8000的问题请教

天边一粒沙 2022-05-21 22:36:07

业务场景:要用mssql查出符合条件的记录,然后用字符串拼装html,字符拼接超过8000个后,后面的字符不显示的问题

问题说明:如下 @body nvarchar(max),由于 #temp 记录较多,发现    select  @body 并未显示查询所有记录,存在有符合条件的记录未显示

请问如何优化下?能够在拼接的字符串中,将所有符合条件的记录组合在一起?
        DECLARE @REMARK nvarchar(max),@Message nvarchar(max);
        DECLARE C_HTMessages CURSOR FAST_FORWARD FOR
        select remark from #temp ;
        OPEN C_HTMessages;
        FETCH NEXT FROM C_HTMessages INTO @remark;
        WHILE @@FETCH_STATUS=0
        BEGIN
            set @Message=ISNULL(@Message,'')+isnull(@remark,'');--可能是这里截断的
            FETCH NEXT FROM C_HTMessages INTO  @remark ;
        END
        CLOSE C_HTMessages;
        DEALLOCATE C_HTMessages;
        set @body= @Beginbody + @Message + @Endbody 
        select  @body

...全文
53 1 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 版主 05-23

你这里不是截断了,只是ssms中select 输出不了这么多字符而已。
可以写程序,调取一个 select 中的内容。
https://blog.csdn.net/Hehuyi_In/article/details/107980007

  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server
加入

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
申请成为版主
帖子事件
创建了帖子
2022-05-21 22:36
社区公告
暂无公告