一个简单的sql语句无论如何改都说语法异常!

一个简单的sql语句无论怎么改都说语法错误!!
use wangning868hexun
declare @num int
set @num=0
WHILE @num<=30
begin 
exec master.dbo.xp_cmdshell 
'bcp "SELECT * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY [时间]) AS RowIndex FROM wangning868hexun.dbo.和讯博客5 ) TableIndex WHERE TableIndex.RowIndex BETWEEN @num + 1 AND @num + 2" queryout d:\123\778899.txt -c -T'
  set @num=@num+2 
END
投降啊!!!怎么都找不出错误来!以下是错误信息图片:
一个简单的sql语句无论如何改都说语法异常!
1···BETWEEN' + @num + 1 + 'AND' + @num + 2 + ' " queryout···和
2···BETWEEN' + @num + '+1 AND' + @num + '+ 2" queryout···都试过了,都不行!就说+号附近有错误
3···BETWEEN'+ cast(@num as varchar(3)) + '+ 1 AND'+ cast(@num as varchar(3)) + ' + 2 " queryout···还是说+附近语法错误!到底是哪里错啊啊!!

------解决思路----------------------


use wangning868hexun
 declare @num int,@sql Nvarchar(max)
set @sql =''
 set @num=0
 WHILE @num<=30
 begin 
 set @sql='bcp "SELECT * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY [时间]) AS RowIndex FROM wangning868hexun.dbo.和讯博客5 ) TableIndex WHERE TableIndex.RowIndex BETWEEN '+ltrim(@num)+' + 1 AND '+ltrim(@num)+' + 2" queryout d:\123\778899.txt -c -T';
 print @sql

exec(' master.dbo.xp_cmdshell '''+@sql+'''')
   set @num=@num+2 
 END


------解决思路----------------------
参照一下语法格式 

EXEC master..xp_cmdshell 'bcp "test..make" in  E:\roy.txt -c -S"SHAREPOINT" -U"sa" -P"wuxi"'
exec master..xp_cmdshell 'bcp "SELECT column1,column2 FROM 库..表名 where datediff(day,时间列,getdate())=0 " queryout c:\Authors.txt -c -t , -S Flysky -U sa -P 密码'