本帖最后由 YUGENPING 于 2013/7/29 15:17 编辑
第二部分 PLSQL程序结构
首先讲述的是条件和顺序控制:if语句、case语句、goto语句
if语句中第一种也是最简单的便是if-then .. end if(中间有空格) 养成习惯每次if-then 随后跟着end if 而且end if后面必须加上分号(;)
if对条件进行判断 求值结果分为3种 TRUE FALSE或者null 当为TRUE时执行if-then后面的语句 否则不执行
if语句中第二种if-then .. else ..end if 求值结果为FALSE或者NULL时执行else后面的语句
if语句中的最后一种便是if-then..elsif(需要注意的是,此处千万别写ELSEIF或者ELSE(中间有空格)IF,否则无法工作)
if嵌套语句与if语句类似 需要注意的地方就是逻辑一定要清晰
PS:if语句求值中有短路的情况,也就是不必求出所有的值,比如条件中第一个求值为False,后面的便不用看了,该结果肯定是FALSE或者NULL了,执行语句便跳跃了then后面的语句,直接执行后面的语句
case语句第一种便是简单case语句,如下图所示
其中,需要特别注意的是,至少有一个条件满足,不然会出现CASE_NOT_FOUND错误。
case语句第二种便是搜索型case语句 搜索型CASE语句会对一系列的布尔表达式求值,一旦求值结果为TRUE,就会执行关联的一系列语句, CASE WHEN expression1 THEN statements1 WHEN expression2 THEN statements2 WHEN expression3 THEN statements3.. ELSE statements_else END CASE;
第三种case语句便是嵌套了 ,不加于赘述。 写到这里 便想到了decode语句了,顺便插入写点关于decode的用法的见解。
DECODE函数是ORACLE PL/SQL的功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其它数据库厂商的SQL实现还没有此功能。
DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。如果熟练之后便会发现decode函数确实很强大啊!!
GOTO语句用的比较少,觉得需要注意的便是,如果GOTO的标签语句是在本语句块前面的话,可能会产生死循环;一个标签后面至少跟着一个可执行语句。
其实应该还有NULL语句,NULL语句作用便是是的代码更加的清晰透明,增加可读性。
|