PL/SQL程序结构概要

一、条件与顺序控制

  • IF语句
    要点
    a、一个if总要有一个匹配的end if;
    b、在关键字end和if之间一定要有空格;
    c、关键字elsif中不要夹带e;
    d、只在关键字end if后使用分号(;)
    具体表现形式
    a、IF THEN END IF
    if和then之间的条件决定then与end if之间的逻辑是否会被执行;如果条件为false或null时,指定逻辑不被执行。
    b、IF THEN ELSE END IF
    此种情况实现了逻辑上的二选一;通过if与then之间的条件结果决定是then与else之间的逻辑被执行,还是else与end if之间的逻辑被执行,总之,此种结构下一定会执行两种逻辑之一。
    c、IF THEN ELSIF ELSE END IF
    这是if语句中最复杂的语句;根据各种条件为true的情况下执行相应的逻辑。事实上,当使用到这种结构时,可以考虑是否应该使用case结构。同时,应该注意:每个elsif字句在condition之后一定要跟一个then。

  • CASE语句
    要点
    a、else语句是可选的,如果没有else语句,并且没有一个表达式的求值结果是true,就会抛出一个case_not_found异常。
    b、when表达式是按照从上到下的顺序被依次求值。
    c、一旦某些语句被执行,整个执行也就结束。意思是:即使有多个表达式求值结果都是true,也只有和第一个表达式关联的语句会被执行。
    具体表现形式
    a、简单的CASE语句
    CASE expression
    WHEN result1 THEN stat1
    WHEN result2 THEN stat2

    ELSE stat_else
    END CASE;
    语句中的else部分可有可无;pl/sql处理逻辑:首先对expression求值,之后将expression的结果与result1比较,如果两者相匹配stat1将被执行;否则检查result2,如此下去。
    b、搜索型CASE语句
    CASE
    WHEN result1 THEN stat1
    WHEN result2 THEN stat2

    ELSE stat_else
    END CASE;
    一个搜索型语句类似于简单CASE语句中expression为true的情况。

  • CASE表达式
    要点
    a、只返回一个单独的值;
    b、不要使用分号或者end case关键字来作case表达式的结尾;
    c、case表达式仅使用一个end关键字作为结束。
    具体表现形式
    a、简单的case表达式 :=CASE expression
    WHEN result1 THEN return_exp1
    WHEN result2 THEN return_exp2

    ELSE return_exp_else
    END;
    b、搜索型的case表达式 :=CASE
    WHEN result1 THEN return_exp1
    WHEN result2 THEN return_exp2

    ELSE return_exp_else
    END;
    例子

declare
  boolean_true  Boolean := true;
  boolean_false boolean := false;
  boolean_null  boolean;
  function boolean_to_varchar2(flag in boolean) return varchar2 is
  begin
    return case flag when true then ‘Truewhen false then ‘Falseelse ‘Nullend;
  end;
begin
  dbms_output.put_line(boolean_to_varchar2(boolean_true));
  dbms_output.put_line(boolean_to_varchar2(boolean_false));
  dbms_output.put_line(boolean_to_varchar2(boolean_null));
end;
  • NULL语句
    语法格式:NULL;
    将保留字null与分号(;)结合构成null语句。null语句代表没有执行逻辑。特别是当else字句没有自己的逻辑的时候,可以用来增强代码的可读性。

二、迭代结构(循环)

三、异常处理

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。