Oracle中的
for
和
while
循环
有两种方式可以实现条件循环
一、
for
变量
in
开始数值...结束数值 loop end loop;
二、
while
条件 loop end loop;
loop的使用方式:
exit when 语句可以出现在循环代码中的任何位置;
for
循环:
begin
for
x
in
reverse 1..10 loop -- reverse大到小
DBMS_OUTPUT.PUT_LINE(
'内:x='
||x);
end loop;
DBMS_OUTPUT.PUT_LINE(
'endget'
);
end;
如以下两个例:
/*
功能描述:计算计算出1到100的和
t的值为和
*/
1)
Create Or Replace Procedure Count_Number Is
i Number(10);
t Number(10);
Begin
i := 1;
t := 0;
Loop
i:=i+1;
---exit when i=100;
exit when i>100;
t:=t+i;
Dbms_Output.Put_Line(
'it'
's :'
|| t);
end loop;
---Dbms_Output.Put_Line(
'it'
's :'
|| t);
End Count_Number;
2)
Create Or Replace Procedure Count_Number Is
i Number(10);
t Number(10);
Begin
i := 1;
t := 0;
Loop
i:=i+1;
if
i=100 then
exit;
end
if
;
t:=t+i;
Dbms_Output.Put_Line(
'it'
's :'
|| t);
end loop;
---Dbms_Output.Put_Line(
'it'
's :'
|| t);
End Count_Number;
注:以上的结论都是一样的 !
以下是一个非常简单的过程,用来熟悉循环的!
1)使用
while
....loop ....end loop ;
Create Or Replace Procedure Count_Number Is
i Number(10);
t Number(10);
Begin
i := 1;
t := 0;
while
i<=100 loop
t:=t+i;
i:=i+1;
Dbms_Output.Put_Line(
'it'
's :'
|| t);
end loop;
---Dbms_Output.Put_Line(
'it'
's :'
|| t);
End Count_Number;
2)用
for
实现:
for
i
in
1..l00 loop ....end loop ;
Create Or Replace Procedure Count_Number Is
i Number(10);
t Number(10);
Begin
--- i := 1;
t := 0;
for
i
in
1..100 loop
t:=t+i;
Dbms_Output.Put_Line(
'it'
's :'
|| t);
end loop;
---Dbms_Output.Put_Line(
'it'
's :'
|| t);
End Count_Number;
for
循环:
[PL/SQL] 用For Loop 替代Cursor
http:
//www.itwenzhai.com/data/2006/0523/article_9377.htm
http:
//blog.youkuaiyun.com/heyday/archive/2005/07/27/435804.aspx
CURSOR FOR Loop
FOR employee_rec
in
c1 ---employee_rec直接用,不用提前定义
LOOP
total_val := total_val + employee_rec.monthly_income;
END LOOP;
当使用CURSOR FOR Loop时,不用我手工open cursor close cursor
应用:
begin
FOR emm IN ( SELECT ro_site, ns_site, product_line, wh_type
FROM eis_hq_invhl_mail_data
WHERE report_type =
'Detailed'
)
LOOP
DBMS_OUTPUT.put_line( emm.product_line );
eis_hq_invhl_pkg.make_mail_detailed_data
( p_ro_site => emm.ro_site,
p_ns_site => emm.ns_site,
p_product_line => emm.product_line,
p_wh_type => emm.wh_type,
p_current_day => to_date(
'2005-11-07'
,
'yyyy-MM-dd'
) );
END LOOP;
end;
存储过程DIY2----游标与循环
http:
//blog.youkuaiyun.com/brave1/archive/2005/06/08/390160.aspx
while
循环:
WHILE( i <= CEIL( LENGTH( p_clob_data ) / 4000 ))
LOOP
v_clob_data := TRIM( SUBSTR( p_clob_data,
i * 4000,
4000 ));
DBMS_OUTPUT.put_line( SUBSTR( v_clob_data,
0,
255 ));
i := i + 1;
(转)Oracle中For和while及一些应用
最新推荐文章于 2025-08-10 13:24:43 发布