由于需要把很多的数据表的查询放在一起,所以考虑使用定义动态语句时,套用while循环。
结果 用来控制循环的变量无法进行更新值。
- SQL code
declare @sql varchar(3000)declare @date datetimedeclare @m varchar(2)declare @d varchar(2)set @date=CONVERT(varchar(10),getdate(),120)set @m=right('0'+cast(DATEPART(M,@date) as varchar),2)set @d=right('0'+cast(DATEPART(D,@date) as varchar),2)set @sql='create table #x(m varchar(7),d varchar(10),ref varchar(1000))'+'while ([email protected]+'=15)begininsert into #x(m,d,ref)select top 10 CONVERT(varchar(7),visit_time,120),CONVERT(varchar(10),visit_time,120),left(REFERRER,charindex('''+'/'+''',REFERRER,12))from [email protected][email protected]+' where REFERRER like '''+'%.baidu.%'+'''select count(*) from #xset [email protected][email protected]+'-1 /*这句没有办法更新*/endselect * from #x'exec (@sql)
------解决方案--------------------
你的这个变量 在这里面已经变成常量了
你可以只把 insert into #x(m,d,ref)
select top 10 CONVERT(varchar(7),visit_time,120),
CONVERT(varchar(10),visit_time,120),left(REFERRER,charindex('''+'/'+''',REFERRER,12))
from [email protected][email protected]+'
where REFERRER like '''+'%.baidu.%'+'''
这一段放到动态里面