Oracle之选择结构和循环结构

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语句

这是一个循环控制语句,关键字LOOPEND表示循环执行的语句范围,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从入门到精通》

你可能感兴趣的:(oracle)