Oracle基本流程语句
====1、IF语句==========
declare
a number:=1;
begin
if a<1 then
dbms_output.put_line('a<1');
elsif a=1 then
dbms_output.put_line('a=1');
else
dbms_output.put_line('a=1');
end if;
end;
/
====2、Case语句==========
declare
sex number:=1;
begin
case sex
when 1 then
dbms_output.put_line('男');
when 2 then
dbms_output.put_line('女');
else
dbms_output.put_line('其它');
end;
end;
/
select stuName,
(case
when stuAge = 0 then '男'
when stuAge = 1 then '女'
else '其它性别'
end)
from stu2;
/
SELECT COUNT(CASE
WHEN stuAge = 0 THEN 1 /*sex 1为男生,2位女生*/
ELSE NULL END) 男生数,
COUNT(CASE
WHEN stuAge = 1 THEN 1
ELSE NULL END) 女生数
FROM stu2;
/
====3、Loop循环语句==========
LOOP
......
EXIT [WHEN condition];
END LOOP;
--例子:
declare
a number:=0;
begin
loop
a:=a+1;
dbms_output.put_line(a);
exit when a=10;
end loop;
end;
/
====4、While循环语句==========
WHILE condition LOOP
.....
END LOOP;
--例子:
declare
a number := 0;
begin
while a < 10 Loop
dbms_output.put_line(a);
a:=a+1;
end loop;
end;
/
====5.FOR循环语句==========
当使用基本循环或WHILE循环时,需要定义循环控制变量,并且循环控制变量不仅可以使用NUMBER类型,
也可以使用其他数据类型。当使用FOR循环时,ORACLE会隐含定义循环控制变量。
FOR counter in [REVERSE] lower_bound. .upper_bound LOOP
.......
END LOOP;
counter是循环控制变量,并且该变量由oracle隐含定义,不需要显式定义。lower_bound和upper_bound分别对应于
循环控制变量的下界值和上界值,默认情况下,当使用FOR循环时,每次循环时循环控制变量会自动增1.
如果指定REVERSE选项,那么每次循环时循环控制变量会自动减1。示例:
begin
for a in reverse 1 .. 10 loop
dbms_output.put_line(a);
end loop;
end;
/
====6.嵌套语句==========
====6.嵌套语句==========
嵌套循环是指在一个循环语句之中嵌入另一个循环语句,而标号(label)则用于
标记嵌套块或嵌套循环,通过在嵌套循环中使用标号,可以区分内层循环和外层循环,
并且可以在内层循环中直接退出外层循环,在编写时可以用<<label_name>>定义标号。示例:
declare
result int;
begin
<<outer>>
for i in 1 .. 10 loop
<<inter>>
for j in 1 .. 10 loop
result := i + j;
exit outer when result > 50;
exit when result = 5;
end loop inter;
dbms_output.put_line(result);
end loop outer;
dbms_output.put_line(result);
end;
/