循环什么时候被触发,以前上C的课弄不清楚。一直没搞懂,看SQL 游标循环处理的时候,发现当循环的条件发生变化的时候就开始判断条件是否符合,如果符合就开始循环。条件不变就会一下执行下面的语句。直接到循环条件发生变化再重新判断。
比如
declare @a int
set @a=1
while @a<100
begin
.....
set @a=@a+1
......
如果不遇上set @a=@a+1 就会一直执行。
是否一旦遇上@a值变化就会重新判断while  如果@a<100就会begin...

解决方案 »

  1.   

    在满足while @a <100 条件的情交下,不停的执行begin end内的内容。
      

  2.   

    当while条件为真,就会循环,
    在循环过程中使用Break或者goto语句就会跳出循环,
    按照你的例子,
    当@a<100时,就会循环,
      

  3.   

    我想知道的是否
    只要@a变化就会马上while判断
      

  4.   


    执行完begin end里面的东西后。
      

  5.   

    不管@a变不变,执行完begin end都要进行while判断
      

  6.   


    declare @a int 
    set @a=1 
    while @a <100 
    begin 
       ..... 
       set @a=@a+1 
    end
    ------------
    如果少了 set @a=@a+1,那么@a变量的值永远都是1,
    那么在 while @a<100这个地方条件就永远都是成立的了。
    这样就成了死循环了。。
      

  7.   

    是否一旦遇上@a值变化就会重新判断while  如果@a <100就会begin... 
    --不是
    declare @a int 
    set @a=1 
    while @a <100 
    begin 
    ..... 
    set @a=@a+1 
    ...... 
    end
    --每次执行进入循环体BEGINGEND之前
    --都会对while后面的条件进行判断,就是判断@a是不是小于100,
    --如果小于则进入循环体,
    --如果大于或等于,则越过循环体(beginend)执行下面的语句  
      

  8.   

    set @a=@a+1
    只是为了不停的改变@a变量的值,当@a的值递增到了100的时候
    这样就不再满足@a<100了,不满足的时候,循环就终止了
      

  9.   

    ------------
    意思第一次执行到end 然后再while 判断 而不是在@a=@a+1的时候判断?
      

  10.   


    意思第一次执行到end 然后再while 判断 而不是在@a=@a+1的时候判断?
    恭喜你答对了