一、if语句
1、if ... then 语句
2 if ... then ... else 语句
3 if ... then ... elsif 语句
1、if ... then 语句
单分支if语句,与Java相似。语法如下:
if <expression> then
pl/sql statement;
end if;
SQL> set serveroutput on
SQL> declare
2 num1 integer := 4;
3 num2 integer := 2;
4
5 begin
6 if num1 > num2 then
7 dbms_output.put_line('num1 > num2');
8 end if;
9 end;
10 /
num1 > num2
PL/SQL 过程已成功完成。
2 if ... then ... else 语句
加上一个else分支。
if <expression> then
pl/sql statement;
else
pl/sql statement;
end if;
SQL> set serveroutput on
SQL> declare
2 num1 number := 4;
3 num2 number := 2;
4 begin
5 if num1 > num2 then
6 dbms_output.put_line('num1 > num2');
7 else
8 dbms_output.put_line('num1 <= num2');
9 end if;
10 end;
11 /
num1 > num2
PL/SQL 过程已成功完成。
3 if ... then ... elsif 语句
SQL> set serveroutput on;
SQL> declare
2 year_date number;
3 leap Boolean;
4 begin
5 year_date := 2013;
6
7 if mod(year_date,4)<>0 then
8 leap := false;
9 elsif mod(year_date, 100) <> 0 then
10 leap := true;
11 elsif mod(year_date, 400) <> 0 then
12 leap := false;
13 else
14 leap := true;
15 end if;
16
17 if leap then
18 dbms_output.put_line(year_date || '是闰年');
19 else
20 dbms_output.put_line(year_date || '是平年');
21 end if;
22 end;
23 /
2013是平年
PL/SQL 过程已成功完成。
Oracle的if语句与Java等语言类型,需要注意的是,Oracle中的关键字和java等语言不同。
二、case 条件语句
有了if语句,当然也有switch 语句。case条件语句有两种形式。一种是获取一个选择器的值,然后将其与每个when字句进行比较。语法如下:
case <selector>
when <expression1> then statement 1;
when <expression2> then statement 2;
……
when <expressionn> then statement n;
[else statement n+1;]
end;
另一种形式是不适用选择器,判断每个when字句中的条件。这种case语句的语法结构如下:
case
when expressionn 1 then statement 1;
when expressionn 2 then statement 2;
……
when expressionn n then statement n;
[else statement n+1;]
end;
/
这里以第二种为例。下边的括号可以省略,Java写习惯了,有点强迫症。。。
SQL> set serveroutput on
SQL> declare
2 salary number;
3 begin
4 salary := 8000;
5
6 case
7 when salary < 5000 then
8 dbms_output.put_line('贫民');
9 when (salary >= 5000 and salary < 10000) then
10 dbms_output.put_line('屌丝');
11 when (salary >= 10000 and salary < 20000) then
12 dbms_output.put_line('平民');
13 else
14 dbms_output.put_line('...');
15 end case;
16 end;
17 /
屌丝
PL/SQL 过程已成功完成。