1:选择结构–IF
<1.1>:基本格式
IF condition THEN
statement
END IF;
条件成立时,执行语句
事例:
declare
v_height number;
begin
v_height := &input;
IF v_height > 160 THEN
dbms_output.put_line('身高大于160');
END IF;
end;
<1.2>:选择结构–IF — IF…ELSE
IF condition THEN
statement1
ELSE
statement2
END IF;
条件成立时,执行语句1;否则执行语句2
事例:
declare
v_height number;
begin
v_height := &input;
IF v_height > 160 THEN
dbms_output.put_line('身高大于160');
ELSE
dbms_output.put_line('身高小于160');
END IF;
end;
<1.3>:选择结构–IF — 多分支IF的书写形式
IF condition THEN
statement1
ELIF condition THEN
statement2
…
ELSE
statement
END IF;
事例:
declare
v_height number;
begin
v_height := &input;
IF v_height = 160 THEN
dbms_output.put_line('身高等于160');
ELSIF v_height > 160 THEN
dbms_output.put_line('身高大于160');
ELSE
dbms_output.put_line('身高小于160');
END IF;
end;
2:选择结构–CASE
<2.1>:CASE简介
Oracle 9i中引入
提供了另外一种分支选择结构
包含两种形式:简单CASE语句、CASE搜索语句
<2.2>:选择结构–CASE —简单CASE语句
语法:
CASE selector
WHEN value1 THEN v1
…
ELSE vn
END;
事例:
declare
v_month number;
v_day number;
begin
v_month := &inputmonth;
v_day := case v_month
when 1 then
31
when 2 then
28
when 3 then
30
else
31
end;
dbms_output.put_line(v_month || '月有' || v_day || '天');
end;
<2.3>:选择结构–CASE —CASE搜索语句
语法:
CASE
WHEN condition THEN statement1
…
ELSE statementn
END CASE;
事例:
declare
v_month number;
v_day number;
begin
v_month := &inputmonth;
case
when v_month in (1, 3, 5, 7, 9, 11) then
v_day := 31;
when v_month in (4, 6, 8, 10, 12) then
v_day := 30;
when v_month = 2 then
v_day := 28;
else
v_day := 0;
end case;
dbms_output.put_line(v_month || '月有' || v_day || '天');
end;
3:循环结构
<3.1>:循环结构 — LOOP循环
语法:
LOOP
statement
[EXIT [WHEN condition]]
END LOOP;
循环执行指定语句,满足条件时退出
事例:
declare
v_num number := 0;
begin
loop
dbms_output.put_line(v_num);
exit when v_num = 9;
v_num := v_num + 1;
end loop;
end;
<3.2>循环结构 — WHILE循环
语法:
WHILE condition
LOOP
statement
END LOOP;
条件成立时,循环执行指定语句
事例:
declare
v_num number := 0;
begin
while v_num < 10 loop
dbms_output.put_line(v_num);
v_num := v_num + 1;
end loop;
end;
<3.3>:循环结构 — FOR循环
语法:
FOR counter IN min_val..max_val
LOOP
statement
END LOOP;
使用计数器执行循环
事例:
begin
for v_num in 0 .. 9 loop
dbms_output.put_line(v_num);
end loop;
end;