pl/sql是功能十分强大的语句,可以和sql一起来用,可以解决一些sql无法完成的问题。下面是关于流程循环语句的总结:
一.条件语句:
1.if ....then ....end if;
2.if ....then ....else end if;
3.if ....then ....elsif ...then...end if;
4.
CASE variable_name
WHEN case1 THEN statement1;
WHEN case2 THEN statement2;
... WHEN caseN-1 THEN statementN-1;
[ELSE statementN]
END CASE; 1.
SQL> set serveroutput on;
SQL> declare
2 v_i number := 1;
3 v_sum number := 0;
4 begin
5 loop
6 v_sum :=v_sum + v_i;
7 v_i := v_i +1;
8 if v_i > 100 then exit;
9 end if;
10 end loop;
11 DBMS_OUTPUT.PUT_LINE(v_sum);
12 end;
13 /
5050
PL/SQL 过程已成功完成。
exit在pl/sql中用以结束,上面的匿名块也可以改写为:
declare
v_i number := 1;
v_sum number := 0;
begin
loop
v_sum :=v_sum + v_i;
v_i := v_i +1;
-- if v_i > 100 then exit;(把之前的comment了)
exit when v_i >100; ==>exit用于结束,注意与上面的区别,上面exit后面没有带条件。
--end if;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
================================================
2.
declare
v_i number := 1;
v_sum number := 0;
begin
loop
v_sum :=v_sum + v_i;
v_i := v_i +1;
if v_i < 50 then DBMS_OUTPUT.PUT_LINE(v_sum) ;
-- else exit;
else exit when v_i>60;
end if;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
=============================================
3.
declare
v_i number := 1;
v_sum number := 0;
begin
loop
v_sum :=v_sum + v_i;
v_i := v_i +1;
if v_i < 50 then DBMS_OUTPUT.PUT_LINE(v_sum) ;
elsif v_i>60 then exit ;
end if;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
======================================
4.
declare
v_i number :=1;
v_sum number := 0;
begin
while v_i>100
loop
v_sum :=v_sum + v_i;
v_i := v_i + 1;
case v_i
when 50 then DBMS_OUTPUT.PUT_LINE(v_sum);
when 60 then exit;
end case;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
下面case后面什么都不加,后面可以判断具体区间:
declare
v_i number :=1;
v_sum number := 0;
begin
while v_i>100
loop
v_sum :=v_sum + v_i;
v_i := v_i + 1;
case
when v_i<50 then DBMS_OUTPUT.PUT_LINE(v_sum);
when v_i>60 then exit;
end case;
end loop;
end;
======================================
二.循环语句:
1.
while ..
loop
.....
end loop;
.....
end;
declare
v_i number :=1;
v_sum number := 0;
begin
while v_i>100
loop
v_sum :=v_sum + v_i;
v_i := v_i + 1;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
注意这里没有do...while..语句
=============================
for i in .. j
loop
......
end loop;
.......
end;
declare
v_sum number := 0;
begin
for i in 1 .. 100 ==>注意此时这里变量i不需要定义,可以在for循环里直接用。
loop
v_sum :=v_sum + i;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
for循环用在游标中很普遍,很方便简洁。
一.条件语句:
1.if ....then ....end if;
2.if ....then ....else end if;
3.if ....then ....elsif ...then...end if;
4.
CASE variable_name
WHEN case1 THEN statement1;
WHEN case2 THEN statement2;
... WHEN caseN-1 THEN statementN-1;
[ELSE statementN]
END CASE; 1.
SQL> set serveroutput on;
SQL> declare
2 v_i number := 1;
3 v_sum number := 0;
4 begin
5 loop
6 v_sum :=v_sum + v_i;
7 v_i := v_i +1;
8 if v_i > 100 then exit;
9 end if;
10 end loop;
11 DBMS_OUTPUT.PUT_LINE(v_sum);
12 end;
13 /
5050
PL/SQL 过程已成功完成。
exit在pl/sql中用以结束,上面的匿名块也可以改写为:
declare
v_i number := 1;
v_sum number := 0;
begin
loop
v_sum :=v_sum + v_i;
v_i := v_i +1;
-- if v_i > 100 then exit;(把之前的comment了)
exit when v_i >100; ==>exit用于结束,注意与上面的区别,上面exit后面没有带条件。
--end if;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
================================================
2.
declare
v_i number := 1;
v_sum number := 0;
begin
loop
v_sum :=v_sum + v_i;
v_i := v_i +1;
if v_i < 50 then DBMS_OUTPUT.PUT_LINE(v_sum) ;
-- else exit;
else exit when v_i>60;
end if;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
=============================================
3.
declare
v_i number := 1;
v_sum number := 0;
begin
loop
v_sum :=v_sum + v_i;
v_i := v_i +1;
if v_i < 50 then DBMS_OUTPUT.PUT_LINE(v_sum) ;
elsif v_i>60 then exit ;
end if;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
======================================
4.
declare
v_i number :=1;
v_sum number := 0;
begin
while v_i>100
loop
v_sum :=v_sum + v_i;
v_i := v_i + 1;
case v_i
when 50 then DBMS_OUTPUT.PUT_LINE(v_sum);
when 60 then exit;
end case;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
下面case后面什么都不加,后面可以判断具体区间:
declare
v_i number :=1;
v_sum number := 0;
begin
while v_i>100
loop
v_sum :=v_sum + v_i;
v_i := v_i + 1;
case
when v_i<50 then DBMS_OUTPUT.PUT_LINE(v_sum);
when v_i>60 then exit;
end case;
end loop;
end;
======================================
二.循环语句:
1.
while ..
loop
.....
end loop;
.....
end;
declare
v_i number :=1;
v_sum number := 0;
begin
while v_i>100
loop
v_sum :=v_sum + v_i;
v_i := v_i + 1;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
注意这里没有do...while..语句
=============================
for i in .. j
loop
......
end loop;
.......
end;
declare
v_sum number := 0;
begin
for i in 1 .. 100 ==>注意此时这里变量i不需要定义,可以在for循环里直接用。
loop
v_sum :=v_sum + i;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
for循环用在游标中很普遍,很方便简洁。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29876893/viewspace-1564190/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29876893/viewspace-1564190/
本文详细介绍了PL/SQL中的条件语句(IF、ELSE、ELSIF)和循环语句(WHILE、FOR),通过实例演示了如何使用这些语句来解决SQL无法完成的问题,特别关注了退出机制(EXIT)的应用。
296

被折叠的 条评论
为什么被折叠?



