Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在游标期间连接varchar的TSQL集_Sql_Tsql_Cursor - Fatal编程技术网

在游标期间连接varchar的TSQL集

在游标期间连接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

调试时,@buildEvents在第一次进入循环时被填充,但在下一次不会被连接。这可能在光标内部发生吗

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)