当前位置: 代码迷 >> Sql Server >> [SqlServer]循环沿用动态语句时,循环变量的控制出错
  详细解决方案

[SqlServer]循环沿用动态语句时,循环变量的控制出错

热度:92   发布时间:2016-04-27 11:33:39.0
[SqlServer]循环套用动态语句时,循环变量的控制出错!
由于需要把很多的数据表的查询放在一起,所以考虑使用定义动态语句时,套用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.%'+'''

这一段放到动态里面
  相关解决方案