Oracle PL/SQL 程序设计读书笔记 - 第4章 条件和顺序控制

Oracle PL/SQL 程序设计读书笔记 - 第4章 条件和顺序控制

Oracle PL/SQL 程序设计读书笔记 - 第4章 条件和顺序控制

4.1 IF语句

  • IF THEN END IF;

这是IF语句最简单的用法。IF和THEN之间的条件决定了在THEN和END IF之间的一系列语句是否会被执行。如果条件部分的求值结果是FALSE或者NULL,这些代码就不会执行。

IF condition
THEN
   
....
END IF;
  • IF THEN ELSE END IF;

这种组合形式的IF语句实现了二选一的逻辑。根据对位于IF和THEN两个关键字之间的条件的求值结果,或者是THEN和ELSE之间的代码被执行,或者是ELSE和END IF之间的代码被执行。总之,这两部分代码肯定有一个会被执行。

IF condition
THEN
   
... TRUE sequence of executable statements ...
ELSE
   
... FALSE/NULL sequence of executable statements ...
END IF;
  • IF THEN ELSEIF ELSE END IF;

这是IF语句最后一个也是最复杂的使用形式。IF语句会从一系列互斥条件中选择一个是TRUE的,然后执行该条件关联的语句。如果是在Oracle 9i Database Release1之后的版本中使用这样的IF语句,你应该考虑使用CASE语句。

IF condition-1
THEN
   statements
-1
ELSEIF condition
-N
THEN
   statements
-N
[ELSE
   else_statements
]
END IF;

4.1.4 避免IF语法的陷阱

  • 一个IF总要有一个匹配的END IF
  • 在关键字END和IF之间必须有空格
  • 关键字ELSIF不要夹带"E"
  • 只在关键字END IF后使用分号(;)

4.1.6 短路求值

PL/SQL使用短路求值方法,也就是说PL/SQL不需要对一个IF语句中的所有表达式都去求值。

4.2 CASE语句和表达式

  • 简单的CASE语句

通过值来关联一个或者多个PL/SQL语句,根据表达式的返回值来选择哪一个语句被执行。

CASE expression
WHEN result1 THEN
   statements1
WHEN result2 THEN
   statements2
...
ELSE
   statements_else
END CASE;

这个CASE语句明确地使用了ELSE子句,不过ELSE语句是可选的。如果你没有明确地指定自己的ELSE子句,PL/SQL会隐含地使用下面的方法:

ELSE
   RAISE CASE_NOT_FOUND
;
  • 搜索形式的CASE语句

根据一系列布尔条件来确定要执行的PL/SQL语句系列。那些和第一个求值结果是TRUE的条件相关联的语句会被执行。

CASE 
WHEN expression1 THEN
   statements1
WHEN expression2 THEN
   statements2
...
ELSE
   statements_else
END CASE;

一旦某些语句被执行,整个执行也就结束了。即便有多个表达式求值结果都是TRUE,也只有和第一个表达式关联的语句会被执行。

ELSE语句是可选的,如果没有指定ELSE,并且没有一个表达式的求值结果是TRUE,就会抛出CASENOTFOUND异常

WHEN表达式是按照从上到下的顺序被依次求值。

4.2.4 CASE表达式

  • 简单的CASE表达式

例如:

x:=
CASE expression
WHEN result1 THEN
   result_expression1
WHEN result2 THEN
   result_expression2
...
ELSE
   result_expression_else
END;
  • 搜索形式的CASE表达式

例如:

x:=
CASE
WHEN expression1 THEN
   result_expression1
WHEN expression2 THEN
   result_expression2
...
ELSE
   result_expression_else
END;

4.3 GOTO语句

GOT语句的常见格式:

GOTO label_name

GOTO语句有一些限制需要注意

  • 一个标签后面至少有跟着一个可执行语句
  • GOTO语句的目标标签必须和GOTO语句在同一个作用域内
  • GOTO语句的目标标签必须和GOTO语句在PL/SQL代码块的相同部分

4.4 NULL语句

NULL语句的语法格式如下:

NULL;

posted on 2011-11-10 00:10  天魂无双  阅读(415)  评论(0编辑  收藏  举报

导航