我想问一下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起什么作用
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起什么作用
end loop
就是做循环,如果没有EXIT,就会一直做循环
IF v_Hour >23 THEN
v_Hour :=0;
EXIT;
........
END LOOP
循环,如果v_Hour >23 则v_Hour :=0;并EXIT;退出
IF v_EndDate >p_Enddate+1 THEN
EXIT;
END IF; LOOP
IF v_Hour >23 THEN
v_Hour :=0;
EXIT;
........
END LOOP
END LOOP
不过你这个中间好像没什么东西可循环的那里抄来的
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个循环没什么用,感觉在提交事务那里,工作已做完了
有错误,欢迎大家来讨论
if 判断(如果为true则 exit)
exit end if (如果为false 则从新判断)
end Loop (如果碰到了exit 就结束循环,没有没有的话就继续循环)
我是一个初学者(Oracle) 我看了上面各位大侠的评论总结出来的,希望有什么不对的地方可以给我指出来!谢谢了!
不然不能执行成功吗?????