PL/SQL 流程控制语句-条件结构,循环结构

时间:2023-03-10 01:30:05
PL/SQL 流程控制语句-条件结构,循环结构

条件结构

一、IF-THEN语句

IF-THEN语句是最简单的IF语句。

语法:

IF condition THEN
Statements
END IF;

例子:

declare
v_score number := &成绩;
begin
if v_score >= 60 then
dbms_output.put_line('合格');
end if;
end;

二、IF-THEN-ELSE语句

与IF-THEN语句相比,在IF-THEN-ELSE语句则给出了在不满足条件时程序的外理情况。

语法:

IF condition THEN
Statements1
ELSE
Statements2
END IF;

例子:

declare
v_score number := &成绩;
begin
if v_score >= 60 then
dbms_output.put_line('合格');
else
dbms_output.put_line('不合格');
end if;
end;

三、IF-THEN-ELSIF语句

该语句是当存在多个不同条件时使用,注意此时是ELSIF,而不是ELSEIF。

语法:

IF condition1 THEN
Statements1
ELSIF condition2 THEN
Statements2
ELSE
Statements3
END IF;

例子:

declare
v_score number := &成绩;
begin
if v_score >= 90 then
dbms_output.put_line('优秀');
elsif v_score >= 60 then
dbms_output.put_line('合格');
else
dbms_output.put_line('不合格');
end if;
end;

四、CASE 语句

CASE语句是在Oracle 9i 版本后引入的控制语句结构。

语法:

CASE variable
WHEN value1 THEN statements1;
WHEN value2 THEN statements2;
……
WHEN valuen THEN statementsn;
[ELSE else_statements;]
END CASE;

例子:

declare
v_score number := &成绩;
begin
case v_score
when 1 then dbms_output.put_line('星期一');
when 2 then dbms_output.put_line('星期二');
when 3 then dbms_output.put_line('星期三');
when 4 then dbms_output.put_line('星期四');
when 5 then dbms_output.put_line('星期五');
when 6 then dbms_output.put_line('星期六');
when 7 then dbms_output.put_line('星期日');
else dbms_output.put_line('未知');
end case;
end;

循环结构

一、LOOP循环

LOOP循环是最简单的一种循环。需使用 EXIT 语句来退出循环。

语法:

LOOP
statements;
END LOOP;

例子:

declare
v_num number := 1;
begin
loop
dbms_output.put_line(v_num);
v_num := v_num+1;
if v_num>15 then
exit;
end if;
end loop;
end;

二、WHILE-LOOP 循环

WHILE-LOOP 循环是在执行循环时,先判断循环条件是否成立,当条件为TRUE时,才开始执行循环体内的语句。

语法:

WHILE condition LOOP
statements;
END LOOP;

例子:

declare
v_num number := 1;
begin
while v_num<=15 loop
dbms_output.put_line(v_num);
v_num := v_num+1;
end loop;
end;

三、FOR-LOOP 循环

与WHILE-LOOP 循环相比,FOR-LOOP 循环可以清楚的知道循环的次数,并且FOR 循环还确定了循环的范围。

语法:

FOR loop_count IN [REVERSE] lower_bound..height_bound LOOP
statements;
END LOOP;

例子:

declare

begin
for i in 1..15 LOOP
dbms_output.put_line(i);
END LOOP;
end;