在游标期间连接varchar的TSQL集
调试时,@buildEvents在第一次进入循环时被填充,但在下一次不会被连接。这可能在光标内部发生吗在游标期间连接varchar的TSQL集,sql,tsql,cursor,Sql,Tsql,Cursor,调试时,@buildEvents在第一次进入循环时被填充,但在下一次不会被连接。这可能在光标内部发生吗 OPEN @BusinessCursor; FETCH NEXT FROM @BusinessCursor INTO @BusinessName; WHILE @@FETCH_STATUS = 0 BEGIN set @buildEvents = @buildEvents + @BusinessName FETCH NEXT FROM @BusinessCursor INTO @B
OPEN @BusinessCursor;
FETCH NEXT FROM @BusinessCursor INTO @BusinessName;
WHILE @@FETCH_STATUS = 0
BEGIN
set @buildEvents = @buildEvents + @BusinessName
FETCH NEXT FROM @BusinessCursor INTO @BusinessName;
END
CLOSE @BusinessCursor;
DEALLOCATE @BusinessCursor;
select @buildEvents
return
关于如何将@buildEvents与@BusinessName连接起来有什么想法吗?im传递的数据是电子邮件的html数据 您可能没有做以下两件事之一:
@buildEvents
时,为其分配一个空字符串:
declare@buildEvents varchar(max)=''
@BusinessName
中的null
:
set@buildEvents=@buildEvents+ISNULL(@BusinessName,”)
重置变量时是否有可能出现空值,而实际看到的只是最后一个值?在光标内抛出PRINT@BusinessName,查看输出isvarchar(max)的长度。buildEvents仅在第一次进入循环时使用第一个值填充,而BusinessName每次都使用不同的值填充,但从不将其包含到buildEvents中,无论您的
选择是否在而循环之外,所以您只打印了一行是的,它在循环之外,因为我想要BuildEvents输出/结果,在它已经连接为一个长字符串之后,谢谢它是ISNULL!有没有办法把2900000个字符输入到这个varchar字符串中?我试着铸造它,但没有成功。。。。。将@buildEvents=cast(@buildEvents+ISNULL(@BusinessName,')设置为varchar(max))@SlopTonio,您已经说过buildEvents的类型是varchar(max),那么为什么要再次进行强制转换?问题出在哪里?@SlopTonio,max表示最大存储大小为2^31-1字节(2 GB)@SlopTonio,请尝试选择len(@buildEvents)