当前位置: 代码迷 >> Sql Server >> 关于sql话语的多重循环
  详细解决方案

关于sql话语的多重循环

热度:60   发布时间:2016-04-27 11:21:53.0
关于sql语句的多重循环
下面的代码里面只会执行内层的while语句,外层的while不会执行,请高手帮忙。
ps. sql server 怎么调试的?断点什么的也搞不懂,不会用啊……

SQL code
declare @MyCounter intdeclare @MyDateTime datetimeset @MyCounter = 1set @MyDateTime = '2012-10-5 00:00:00'while(@MyCounter < 16)    begin        while(@MyDateTime < '2012-10-5 23:59:59')            begin            insert into dbo.H_MURunTime(MUId,[CurTime],RunTime)            values(@MyCounter,@MyDateTime,1)            set @MyDateTime = dateadd(hh,1,@MyDateTime)            end    set @MyCounter = @MyCounter + 1    end


------解决方案--------------------
print看看.
------解决方案--------------------
如果是SQL SERVER 2005以下版本,只能通过加print xxxx 或 select xxx之类的进行调试
------解决方案--------------------
第一次代码执行 里面的while执行完毕后。 其实外出while 也执行了。但是 第二次以后的内层while不会执行因为(@MyDateTime < '2012-10-5 23:59:59')不会再满足条件了
------解决方案--------------------
不是外层的while不执行,是执行了但是内层的while已经进不去了。因为第一次内层的while循环出去后日期就变成2012-10-6 00:59:59 所以内层while再也进不去了。如果你要再进的话
SQL code
declare @MyCounter intdeclare @MyDateTime datetimeset @MyCounter = 1set @MyDateTime = '2012-10-5 00:00:00'while(@MyCounter < 16)    begin        while(@MyDateTime < '2012-10-5 23:59:59')            begin            insert into dbo.H_MURunTime(MUId,[CurTime],RunTime)            values(@MyCounter,@MyDateTime,1)            set @MyDateTime = dateadd(hh,1,@MyDateTime)            end    set @MyCounter = @MyCounter + 1    SET @MyDateTime = '2012-10-5 00:00:00'    end
  相关解决方案