PL/SQL
1. 选择结构
(1)if语句
IF {条件表达式1)} THEN
{语句序列1;}
[ELSIF (条件表达式2)THEN
{语句序列2;)]
[ELSE
{语句序列3;)]
END IF;
需要注意的是,上述命令格式中ELSEIF的拼写里只有一个E,不是ELSEIF,而是ELSIF
三种用法举例:
1.IF…THEN
IF A=40 THEN
INSERT INTO TEMP_TABLE VALUES(NAME,BIRTHDAY);
END IF;
2.IF…THEN…ELSE
IF A>=40 THEN
INSERT INTO ELDER_TABLE VALUES(NAME,BIRTHDAY);
ELSE
INSERT INTO YOUNGER_TABLE VALUES(NAME,BIRTHDAY);
END IF;
3.IF…THEN…ELSEIF
IF score>90 THEN
score:=score-5;
ELSIF score<60 THEN
score:=score+5;
END IF;
(2)CASE语句
CASE结构是Oracle 9i后新增加的内容,类似于C中的switch语句,格式如下:
CASE 检测表达式
WHEN 表达式1 THEN 语句序列1
WHEN 表达式2 THEN 语句序列2
...
[ELSE 其他语句序列]
END;
其中,CASE语句中的ELSE子句是可选的,如果检测表达式的值与下面任何一个表达式的值都不匹配时,PL/SQL会产生预定义错误CASE_NOT_FOUNT。
例如:
declare
str varchar2(20):='b';
numb number(1);
begin
numb:=case str
when 'a' then 1
when 'b' then 2
when 'c' then 3
else 4
end;
dbms_output.put_line(numb);
end;
输出:2
null判断
如果var_a为null的话,那么
var_a>1;
var_a<1;
都是不成立的。所以这时候应该有一个null的判断。语句为:
if var_a is null then
...
2.循环结构
(1)LOOP…EXIT…END LOOP语句
这是一个循环控制语句,关键字LOOP和END表示循环执行的语句范围,EXIT关键字表示退出循环,它常常在一个if判断语句中。
例如:
c:=0; --循环标志变量
LOOP
IF c>5 THEN --如果c大于5则退出循环
EXIT;
END IF;
c:=c+1;
END LOOP;
(2)LOOP…EXIT WHEN…END LOOP语句
表示当WHEN后面判断为真时退出循环。
例如:
c:=0;
LOOP
EXIT WHEN c>5; --注意此处有个省略号
c:=c+1;
END LOOP;
(3) WHILE…LOOP…END LOOP语句
该语句也是控制循环,不过是先判断再进入循环,而不是像前两个一样是可以设置EXIT的位置来选择。
c:=0;
WHILE c<=5 LOOP
c:=c+1;
END LOOP;
(4) FOR…IN…LOOP…END LOOP语句
这是个预知循环次数的循环控制语句。
例如,下边这个程序和上边那个的执行结果是一样的:
c:=0;
FOR a IN 0..5 LOOP --c从0到5进行循环(注意是两个点)
c:=c+1;
END LOOP;
学习书籍:《Oracle+11g从入门到精通》