PL/SQL之流程控制

1.条件控制

1.1 IF 语句

IF 语句根据条件执行一系列语句,有三种形式:IF-THEN、IF-THEN-ELSE 和 IF-THEN-ELSIF

1.if语句

语法:

if 条件表达式 then

  plsql语句;

end if;

语义:如果条件表达式成立,那么执行then后面的plsql代码,如果条件不成立跳过if语句执行其它语句

如:

PL/SQL之流程控制_第1张图片

PL/SQL之流程控制_第2张图片

PL/SQL之流程控制_第3张图片

2.if else 语句

语法:

  if 条件表达式 then

     plsql语句;

  else

     plsql语句;

  end if;

语义:如果if的条件表达式成立,执行then后面的代码,如果条件不成立执行else后面的代码;

如:

PL/SQL之流程控制_第4张图片

PL/SQL之流程控制_第5张图片

 PL/SQL之流程控制_第6张图片

3)elsif语句

语法:

if 条件表达式1 then

    plsql语句1;

elsif 条件表达式2 then

    plsql语句2;

...

elsif 条件表达式n then

    plsql语句n;

else

    plsql语句;

end if;

语义:如果条件表达式1成立,执行语句1,如果条件1不成立,判断第二个条件表达式,如果成立执行语句2,不成立判断下一条件,如果所有条件都不成立执行else后面的语句.其中elsif可以有多个,else部分可以省略

 PL/SQL之流程控制_第7张图片

 PL/SQL之流程控制_第8张图片

 

1.2CASE 语句

语法1:

case

   when 条件表达式1 then

        值1;

   when 条件表达式2 then

        值2;

   when 条件表达式3 then

        值3;

     ...

   else

        默认值;

end case;

语法2:

case 条件表达式

  when 值1 then

     plsql语句1;

  when 值2 then

     plsql语句2;

   ...

  when 值n then

     plsql语句n;

  else

     plsql语句;

end case;

语义:如果条件表达式的值,等于某个when后面的值,那么就执行相应then后面的plsql语句,如果表达式的值没在when所列的值中,那么执行else后面的语句,其中else部分可以省略。

PL/SQL之流程控制_第9张图片

PL/SQL之流程控制_第10张图片

PL/SQL之流程控制_第11张图片

2.循环控制

2.1 LOOP 循环

语法:

loop

  plsql语句;

  exit when 退出循环条件;

  循环控制语句;

end loop;

 PL/SQL之流程控制_第12张图片

 PL/SQL之流程控制_第13张图片

2.2 WHILE 循环

语法:

 while 循环条件 loop

    循环体语句;

    循环控制语句;

 end loop;

 PL/SQL之流程控制_第14张图片

PL/SQL之流程控制_第15张图片

PS:这里稍微解释一下出来的为什么v_n=10,初始值为1,然后v_n=1 < 10 所以进入while循环,v_n每次加1,当循环到最后一次的时候v_n=9,v_n=9+1 =10,10=10,不符合循环条件,既退出循环过程,所以输出10. 

 2.3 FOR 循环

语法:

for 循环变量 in [reverse] 集合|查询语句|游标变量 loop

  循环体语句;

end loop;

循环变量:不需要在declare中声名,变量类型,根据in后面的集合或者查询语句而定,普通数据类型,record类型

reverse:可选参数,表示循环的方向,不加表示从开始到结尾,加上表示从结尾到开头

PL/SQL之流程控制_第16张图片

PL/SQL之流程控制_第17张图片

你可能感兴趣的:(PL/SQL,Oracle,sql,数据库)