sql1运行到这里监视的字符串就消失

sql一运行到这里监视的字符串就消失
use wangning868hexun
declare @num int
declare @sqlstr nvarchar(3000)
declare @时间 datetime
declare @timestr nvarchar(1000)
set @num =0
WHILE @num <=30
begin

set @sqlstr = 'SELECT *,ROW_NUMBER() OVER(ORDER BY [时间]) AS RowIndex into #TableIndex FROM wangning868hexun.dbo.和讯博客3'
exec (@sqlstr)
set @timestr = 'select @p1=时间 from #TableIndex WHERE #TableIndex. RowIndex='+cast(@num as varchar(3))
        exec sp_executesql @timestr, N'@p1 varchar(30) output',@时间 output
select @时间
set @sqlstr = 'bcp "''' + @sqlstr +' WHERE #TableIndex.RowIndex BETWEEN ''+cast(@num +1 as varchar(10))+'' AND ''+cast(@num +2 as varchar(10)) "'
        set @sqlstr = @sqlstr +' queryout d:\123\ '+convert(varchar(30),@时间,120)+'.txt -c -T'
        exec master .dbo. xp_cmdshell @sqlstr
        set @num =@num + 1
END
drop table ##TableIndex

一运行就16行,监视的变量@sqlstr 就变成空了!也就是说15行的代码没有写进@sqlstr里边!
试过把varchar都改成nvarchar也不见效。

【温馨提示:如果要测试,请建立数据库:wangning868hexun和表:和讯博客3 字段:时间、内容即可测试。】
------解决思路----------------------
变量@sqlstr 就变成空了
可能 组成它的某个字符串是null
------解决思路----------------------
引用:
Quote: 引用:

变量@sqlstr 就变成空了
可能 组成它的某个字符串是null

对了,我发现上面的select @时间 是null,那么字符串+null+字符串=null?


对!