-------------本来希望变量@str在执行时获得值,但是执行时编译器不认识它了...
declare @str varchar(8000)
declare @bI int,@eI int --设置填充@str的开始和结束记录
declare @sqlStr varchar(1000)
select @str='',@sqlStr='',@bI=5,@eI=7
set @sqlStr='select @str=@str+[60Minute] from (select top '+cast(@eI-@bI+1 as varchar)+' * from (select top '+cast(@eI as varchar)+' * from tab order by ObservTimes)a order by ObservTimes desc)a order by ObservTimes'
exec(@sqlStr)--执行报错:需要声明变量@str----------------改为下面的,即在动态语句中声明变量@str,然后将@str获得的值插入中间表,最后外部从中间表得到数据.
declare @str varchar(8000)
declare @bI int,@eI int --设置填充@str的开始和结束记录
declare @str='',@sqlStr varchar(1000)
select @sqlStr='',@bI=5,@eI=7
set @sqlStr='declare @str varchar(1000) set @str='''' select @str=@str+[60Minute] from (select top '+cast(@eI-@bI+1 as varchar)+' * from (select top '+cast(@eI as varchar)+' * from tab order by ObservTimes)a order by ObservTimes desc)a order by ObservTimes select @str a into test1'
exec(@sqlStr)
select @str --@str仍为'',并没有被处理
select * from test1 --这个当然可以查出.
那有没有其他办法?我不想用中间表,最好直接用外部变量@str取到值.
如何才能不在动态语句里面声明,让这样的外部变量让编译器理解?
模型各位随便建立就可以了,关键是想知道怎么处理这样的变量.请各位多指教~