📄 第四章 pl-sql的控制结构 - pl-sql用户指南与参考 - whatiswhat.htm
字号:
<TD colSpan=4>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0
cellPadding=0 width=980 border=0>
<TBODY>
<TR>
<TD></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<SCRIPT language=javascript>function $(s){return document.getElementById(s);}function ShowHideDiv(divid,iImg){if($(divid).style.display == "none"){iImg.src="../../templates/newgreen/images/dot2.gif";$(divid).style.display = "block";iImg.title="收起";}else{iImg.src="../../templates/newgreen/images/dot4.gif";$(divid).style.display = "none";iImg.title="展开";}}navHover();</SCRIPT>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0
cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD height=3></TD></TR></TBODY></TABLE><BR>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0
cellPadding=0 width="90%" align=center border=0>
<TBODY>
<TR>
<TD width=18 height=28><IMG alt=""
src="第四章 PL-SQL的控制结构 - PL-SQL用户指南与参考 - whatiswhat.files/bg_art_left_top.gif"
border=0></TD>
<TD
background="第四章 PL-SQL的控制结构 - PL-SQL用户指南与参考 - whatiswhat.files/bg_art_top.gif">
<P style="MARGIN: 5px; LINE-HEIGHT: 150%"></P></TD>
<TD width=18 height=28><IMG alt=""
src="第四章 PL-SQL的控制结构 - PL-SQL用户指南与参考 - whatiswhat.files/bg_art_right_top.gif"
border=0></TD></TR>
<TR>
<TD width=18
background="第四章 PL-SQL的控制结构 - PL-SQL用户指南与参考 - whatiswhat.files/bg_art_left.gif"></TD>
<TD align=middle bgColor=#f5fdee><BR><FONT style="FONT-SIZE: 14pt"
color=#295200><B>第四章 PL/SQL的控制结构</B></FONT>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#a5bd6b cellSpacing=1
cellPadding=0 width="100%" border=1>
<TBODY>
<TR>
<TD align=middle>
<TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word"
cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD align=middle>
<TABLE
style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word"
cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD>
<DIV id=art style="MARGIN: 15px">
<CENTER><IMG alt=""
src="第四章 PL-SQL的控制结构 - PL-SQL用户指南与参考 - whatiswhat.files/o_cover.jpg"><BR><IMG
alt=""
src="第四章 PL-SQL的控制结构 - PL-SQL用户指南与参考 - whatiswhat.files/o_banner.gif">
</CENTER>
<DIV id=chapter>第四章 PL/SQL的控制结构</DIV><!-- InstanceEndEditable --><!-- InstanceBeginEditable name="EditRegion2" -->
<P class=title1>一、PL/SQL控制结构一览</P>
<P>根据结构定理(structure
theorem),任何计算机程序都可以用下图中的基本控制结构来表示。它们可以任意组合来解决问题。
</P><IMG alt=""
src="第四章 PL-SQL的控制结构 - PL-SQL用户指南与参考 - whatiswhat.files/o_4-1.gif">
<P>选择结构是用于测试条件的,根据条件的真假,执行一系列语句。一个条件语句可以是任何能够返回布尔值(TRUE或FALSE)的变量或表达式。循环结构能在条件满足的情况下反复执行。序列结构只是简单的按照顺序执行语句。
</P>
<P class=title1>二、条件控制:IF和CASE语句</P>
<P>有时候,我们需要根据具体的条件来采取不同的对策。IF语句就能让我们按条件来执行语句序列。也就是说,语句序列的执行与否取决于某个给定的条件。有三种IF语句:IF-THEN、IF-THEN-ELSE和IF-THEN-ELSIF。CASE语句是条件判断的精简形式,它能计算条件表达式的值并在多个对应动作中做出选择。
</P>
<P class=title2>1、IF-THEN语句</P>
<P>IF语句最简单的形式就是把一个条件和一个语句序列用关键字THEN和END IF关联起来: </P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap><STRONG>IF</STRONG> condition <STRONG>THEN</STRONG><BR> sequence_of_statements<BR><STRONG>END</STRONG> <STRONG>IF</STRONG>;
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>只有在条件值为真的时候语句序列才能被执行。如果条件值为假或是空,IF语句就什么都不做。无论哪种情况,控制权最后还是会被传递到下一个语句,如下例:
</P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap><STRONG>IF</STRONG> sales > QUOTA <STRONG>THEN</STRONG><BR> compute_bonus(empid);<BR><BR> <STRONG>UPDATE</STRONG> payroll<BR> <STRONG>SET</STRONG> pay = pay + bonus<BR> <STRONG>WHERE</STRONG> empno = emp_id;<BR><STRONG>END</STRONG> <STRONG>IF</STRONG>;
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>如果我们把IF语句放到一行,就可以像下面这样编写: </P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap><STRONG>IF</STRONG> x > y <STRONG>THEN</STRONG> high := x; <STRONG>END</STRONG> <STRONG>IF</STRONG>;
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P class=title2>2、IF-THEN-ELSE语句</P>
<P>第二种形式的IF语句使用关键字ELSE添加了一个额外的处理选项,如下: </P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap><STRONG>IF</STRONG> condition <STRONG>THEN</STRONG><BR> sequence_of_statements1<BR><STRONG>ELSE</STRONG><BR> sequence_of_statements2<BR><STRONG>END</STRONG> <STRONG>IF</STRONG>;
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>当条件为假或空时,ELSE子句中的语句序列就会被执行。下例中,第一个UPDATE语句在条件为真的情况下执行,而第二个UPDATE语句在条件为假或为空的情况下才会被执行:
</P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap><STRONG>IF</STRONG> trans_type = <EM>'CR'</EM> <STRONG>THEN</STRONG><BR> <STRONG>UPDATE</STRONG> accounts<BR> <STRONG>SET</STRONG> balance = balance + credit<BR> <STRONG>WHERE</STRONG> ...<BR><STRONG>ELSE</STRONG><BR> <STRONG>UPDATE</STRONG> accounts<BR> <STRONG>SET</STRONG> balance = balance - debit<BR> <STRONG>WHERE</STRONG> ...<BR><STRONG>END</STRONG> <STRONG>IF</STRONG>;
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>THEN和ELSE子句中也可以包含IF语句。就是说IF语句能够被嵌套使用,如下例所示: </P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap><STRONG>IF</STRONG> trans_type = <EM>'CR'</EM> <STRONG>THEN</STRONG><BR> <STRONG>UPDATE</STRONG> accounts<BR> <STRONG>SET</STRONG> balance = balance + credit<BR> <STRONG>WHERE</STRONG> ...<BR><STRONG>ELSE</STRONG><BR> <STRONG>IF</STRONG> new_balance >= minimum_balance <STRONG>THEN</STRONG><BR> <STRONG>UPDATE</STRONG> accounts<BR> <STRONG>SET</STRONG> balance = balance - debit<BR> <STRONG>WHERE</STRONG> ...<BR> <STRONG>ELSE</STRONG><BR> <STRONG>RAISE</STRONG> insufficient_funds;<BR> <STRONG>END</STRONG> <STRONG>IF</STRONG>;<BR><STRONG>END</STRONG> <STRONG>IF</STRONG>;
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P class=title2>3、IF-THEN-ELSIF语句</P>
<P>有时我们可能需要从几个选项中选择一个,这时我们就需要使用第三种IF语句,添加一个ELSIF关键字提供额外的条件选项,使用方法如下:
</P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap><STRONG>IF</STRONG> condition1 <STRONG>THEN</STRONG><BR> sequence_of_statements1<BR><STRONG>ELSIF</STRONG> condition2 <STRONG>THEN</STRONG><BR> sequence_of_statements2<BR><STRONG>ELSE</STRONG><BR> sequence_of_statements3<BR><STRONG>END</STRONG> <STRONG>IF</STRONG>;
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>如果第一个条件为假或空,ELSIF子句就会检测另外一个条件。一个IF语句可以有多个ELSIF子句;最后一个ELSE子句是可选的。条件表达式从上而下的计算。只要有满足的条件,与它关联的语句就会执行,然后控制权转到下一个语句。如果所有的条件都为假或是空,ELSE部分的语句就会执行。看一下下面的例子:
</P>
<BLOCKQUOTE>
<TABLE>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -