我想问一下loop是做什么用的,一般有
for   in  
loop
....
end loop
这样用的,但我还看到  
BEGIN
      v_Startdate:=trunc(p_StartDate);
      v_EndDate:=trunc(p_EndDate+1);
      v_Hour := 0;
      --清空指定时间段内的数据
      delete from csuseraccessnumdaystat where
      statdate>=v_StartDate and statdate<v_EndDate;
      COMMIT;
      v_EndDate:=trunc(p_StartDate+1);
      LOOP
        IF v_EndDate>p_Enddate+1 THEN
          EXIT;
        END IF;        LOOP
IF v_Hour>23 THEN
v_Hour :=0;
EXIT;
........
       END LOOP
     END LOOP
我想问一下,上边的这种用法,loop起什么作用   

解决方案 »

  1.   

    loop
    end loop 
    就是做循环,如果没有EXIT,就会一直做循环
      

  2.   

    LOOP 
    IF v_Hour >23 THEN 
    v_Hour :=0; 
    EXIT; 
    ........ 
    END LOOP
    循环,如果v_Hour >23 则v_Hour :=0;并EXIT;退出
      

  3.   

    用了两个loop做的嵌套循环LOOP 
       IF v_EndDate >p_Enddate+1 THEN 
       EXIT; 
       END IF;        LOOP 
              IF v_Hour >23 THEN 
              v_Hour :=0; 
              EXIT; 
              ........ 
           END LOOP 
    END LOOP 
    不过你这个中间好像没什么东西可循环的那里抄来的
      

  4.   

    BEGIN 
          v_Startdate:=trunc(p_StartDate); 
          v_EndDate:=trunc(p_EndDate+1); 
          v_Hour := 0; 
    执行到这里是为变量赋值--清空指定时间段内的数据 
          delete from csuseraccessnumdaystat where 
          statdate >=v_StartDate and statdate <v_EndDate; 
          COMMIT; 
    执行到这里删除了v_StartDate和v_EndDate之间的数据,并提交了事务  v_EndDate:=trunc(p_StartDate+1); 
          LOOP 
            IF v_EndDate >p_Enddate+1 THEN 
              EXIT; 
            END IF;         LOOP 
    IF v_Hour >23 THEN 
    v_Hour :=0; 
    EXIT; 
    ........ 
           END LOOP 
         END LOOP 
    不知道代码是不是没有贴完还是怎么的,这2个循环没什么用,感觉在提交事务那里,工作已做完了
    有错误,欢迎大家来讨论
      

  5.   

    Loop 循环
        if 判断(如果为true则 exit)
        exit    end if (如果为false 则从新判断)
    end Loop  (如果碰到了exit 就结束循环,没有没有的话就继续循环)
        我是一个初学者(Oracle) 我看了上面各位大侠的评论总结出来的,希望有什么不对的地方可以给我指出来!谢谢了!
      

  6.   

    Oracle中的存储过程是不是要授权的
    不然不能执行成功吗?????
      

  7.   

    追问下,loop循环中和以前的for循环有什么区别,比如说以前使用的contiue功能,在loop中一样的使用吗?