Oracle PL/SQL 程序设计读书笔记 - 第4章 条件和顺序控制
2011-11-10 00:10
363 查看
Oracle PL/SQL 程序设计读书笔记 - 第4章 条件和顺序控制
这是IF语句最简单的用法。IF和THEN之间的条件决定了在THEN和END IF之间的一系列语句是否会被执行。如果条件部分的求值结果是FALSE或者NULL,这些代码就不会执行。
IF THEN ELSE END IF;
这种组合形式的IF语句实现了二选一的逻辑。根据对位于IF和THEN两个关键字之间的条件的求值结果,或者是THEN和ELSE之间的代码被执行,或者是ELSE和END IF之间的代码被执行。总之,这两部分代码肯定有一个会被执行。
IF THEN ELSEIF ELSE END IF;
这是IF语句最后一个也是最复杂的使用形式。IF语句会从一系列互斥条件中选择一个是TRUE的,然后执行该条件关联的语句。如果是在Oracle 9i Database Release1之后的版本中使用这样的IF语句,你应该考虑使用CASE语句。
在关键字END和IF之间必须有空格
关键字ELSIF不要夹带"E"
只在关键字END IF后使用分号(;)
通过值来关联一个或者多个PL/SQL语句,根据表达式的返回值来选择哪一个语句被执行。
这个CASE语句明确地使用了ELSE子句,不过ELSE语句是可选的。如果你没有明确地指定自己的ELSE子句,PL/SQL会隐含地使用下面的方法:
搜索形式的CASE语句
根据一系列布尔条件来确定要执行的PL/SQL语句系列。那些和第一个求值结果是TRUE的条件相关联的语句会被执行。
一旦某些语句被执行,整个执行也就结束了。即便有多个表达式求值结果都是TRUE,也只有和第一个表达式关联的语句会被执行。
ELSE语句是可选的,如果没有指定ELSE,并且没有一个表达式的求值结果是TRUE,就会抛出CASENOTFOUND异常
WHEN表达式是按照从上到下的顺序被依次求值。
例如:
搜索形式的CASE表达式
例如:
GOTO语句有一些限制需要注意
一个标签后面至少有跟着一个可执行语句
GOTO语句的目标标签必须和GOTO语句在同一个作用域内
GOTO语句的目标标签必须和GOTO语句在PL/SQL代码块的相同部分
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;
相关文章推荐
- 《oracle pl/sql programming》 第四章 条件与顺序控制 第五章 迭代与循环
- ORACLE PL/SQL 实例精解之第四章 条件控制:if 语句
- ORACLE PL/SQL 实例精解之第五章 条件控制:CASE语句
- Oracle:PL/SQL--流程控制(一)——条件结构:if-then、if-then-else、if-then-elsif
- pl/sql条件和顺序控制
- pl/sql条件和顺序控制
- Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据
- Oracle之PL/SQL编程_流程控制语句
- oracle(02): PL/SQL基本概念,关系运算符,顺序结构,分支结构,循环结构
- Oracle PL/SQL 程序设计读书笔记 - 第15章 数据提取
- oracle PL/SQL的基本构成,结构控制语句,分支结构,选择结构,loop循环结构,
- Oracle PL/SQL语言基础_控制语句
- 如何在PL/SQL中修改ORACLE的字段顺序
- Oracle PL/SQL 程序设计读书笔记 - 第12章 集合
- oracle PL/SQL(procedure language/SQL)程序设计--控制结构(if else )
- Oracle PL/SQL 程序设计读书笔记 - 第16章 动态SQL和动态PL/SQL
- Oracle、PL/Sql 问题:ORA-00001: 违反必须为唯一的限制条件 ()
- Oracle PL/SQL之LOOP循环控制语句
- 二十五、oracle pl/sql进阶--控制结构(分支,循环,控制)
- Oracle PL/SQL变量、常量、流程控制、循环语句