关于SQL while 循环嵌套 外部循环数据无法进入内部循环

本文介绍了SQL中while循环嵌套时出现的变量无法正确进入内循环的问题,并给出了解决方案,即将内循环变量的初始化语句置于外循环的开始部分。

下面一般是,作为SQL新手第一次写循环嵌套的办法,但是大家会发现一个问题,那就是变量@i总是不能进入第二个循环。

declare @i int ,@j int, @k int 
  set @i = 1 
  set @k = 1
  set @j = 1  --注意 set @j=1 的位置, @j 是内部循环变量的初始变量。
  while   @i <= 12
    begin
        while @j <= 5
        begin
            set @k = @k +1
            set @j = @j +1
        end
    set @i=@i+1
 end

 那么解决问题的办法如下:

declare @i int ,@j int, @k int 
  set @i =1 
  set @k=1
  while @i <=12
    begin
        set @j =1  --@j位置的调整,将其调整到第一循环的begin开的内部。
        while @j <=5
        begin
            set @k =@k +1
            set @j =@j +1
            exec(@sql)
        end
    set @i=@i+1
 end

大家可以发现两端代码的不同之处,就是因为将 set @j=1 的位置进行了调整。

事实上,解决SQL,while 嵌套循环外部循环变量不能进入内部循环的解决办法就是 内部循环变量的初始变量设置要放在外部循环的begin内部

 

---------------------------------------------------华丽丽的分割线----------------------------------------------------------

最后,介绍下自己,网名:一也

 

转载于:https://www.cnblogs.com/goodge/p/5136772.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值