PL/SQL中逻辑控制语句

作为一门面向过程的编程语言,PL/SQL中肯定少不了逻辑控制语句.

一、条件控制语句

1、IF条件控制语句

和其它编程语言一样,PL/SQL中的IF条件控制语句也有三种形式。

形式1:
        IF condition THEN
            statements;
        END IF;
            
形式2:
        IF condition THEN
            statements;
        ELSE
            statements;
        END IF;     
    
形式3:
        IF condition THEN
            statements;
        ELSIF condition THEN
            statements;
        ELSE
            statements; 
        END IF; 

2、CASE条件控制语句

简单case语句
        [ <> ]
        CASE case_expr              --这是一个变量或者表达式
        WHEN case_value1 THEN
            statement;
        WHEN case_value2 THEN
            statement;
        ELSE                 --当所有value都不匹配时执行,可省略
            statment;
        END CASE [label_name];
        
搜索式case语句
        [ <> ]
        CASE                --这里没有表达式
        WHEN boolean_expr1 THEN
            statement;
        WHEN boolean_expr2 THEN
            statement;
        ELSE                 --当所有 boolean_expr都不成立时执行,可省略
            statment;
        END CASE [label_name];  

二、LOOP循环控制语句

在PL/SQL中重复执行一条语句或一组语句,可以使用循环控制结构,PL/SQL中循环结构有下面4种形式:
1)基本循环结构
2)WHILE ... LOOP
3)FOR 循环
4)CURSOR FOR LOOP:在游标中介绍

1、基本循环结构

LOOP                    --循环开始标志
    statement;          --循环体
END LOOP;               --循环结束标志


示例1:
declare 
  i number(10);
begin
  i := 1;
  LOOP
    DBMS_OUTPUT.PUT_LINE('i值为:' || i);
  EXIT WHEN i >= 10;
    i := i+1;
  END LOOP;
end;
/

示例2:
declare 
  i number(10);
begin
  i := 1;
  LOOP
    DBMS_OUTPUT.PUT_LINE('i值为:' || i);
      IF i >= 10 THEN
        EXIT;
      END IF;
      i := i+1;
  END LOOP;
end;
/

基本循环结构需要搭配 EXIT 退出循环,否则会一直执行下去.

2、WHILE ... LOOP

该循环结构本身可以终止循环,当 WHILE 后面 布尔表达式true 时,循环体将会执行一次,然后重新判断 布尔表达式 是否为 true,直到为 false 时,退出循环.

WHILE boolean_expr      --布尔表达式
LOOP
    statement;          --循环体
END LOOP;


示例:
declare 
  i number(10);
begin
  i := 1;
  WHILE i <= 10
  LOOP
    DBMS_OUTPUT.PUT_LINE('i值为:' || i);
    i := i+1;
  END LOOP;
end;
/

3、FOR 循环

FOR index IN [REVERSE]              --index:循环次数    REVERSE:循环方式,默认从下边界到上边界,使用之后刚好相反
    lower_bound .. upper_bound      --分别对应FOR循环的下边界、上边界,用..连接
LOOP                
    statment;      --循环体
END LOOP;       


示例:
begin
  FOR i IN 1..10
  LOOP
    DBMS_OUTPUT.PUT_LINE('i:' || i);
  END LOOP;
end;
/

lower_boundupper_bound相等时,循环只执行一次,同时,这两者也可以用变量来代替,动态控制循环范围.

四、顺序控制语句

PL/SQL中一般都是从前到后的顺序执行,同时也可以使用 GOTO、NULL 来控制顺序.
GOTO:跳转到特定处执行随后的语句.
NULL:不会执行任何操作.

你可能感兴趣的:(PL/SQL中逻辑控制语句)