天天看點

Oracle之PL/SQL程式設計_流程控制語句

選擇語句

1. if...then 語句

文法:

1

2

3

<code>if &lt; condition_expression &gt; </code><code>then</code>

<code>plsql_sentence</code>

<code>end</code> <code>if;</code>

condition_expression:表示一個條件表達式,其值為 true 時,程式會執行 if 下面的 PL/SQL 語句;

如果其值為 false,則程式會跳過if 下面的語句而 直接執行 end if 後邊的語句。

plsql_sentence:condition_expression 為 true 時,要執行的語句。

2. if...then...else 語句

4

5

<code>plsql_sentence_1;</code>

<code>else</code>

<code>plsql_sentence_2;</code>

3.if...then...elsif 語句

6

7

8

<code>if &lt; condition_expression1 &gt; </code><code>then</code>

<code>elsif &lt; condition_expression2 &gt; </code><code>then</code>

<code>...</code>

<code>plsql_sentence_n;</code>

4. case 語句

<code>case</code> <code>&lt; selector &gt;</code>

<code>when</code> <code>&lt;expression_1&gt; </code><code>then</code> <code>plsql_sentence_1;</code>

<code>when</code> <code>&lt;expression_2&gt; </code><code>then</code> <code>plsql_sentence_2;</code>

<code>when</code> <code>&lt;expression_n&gt; </code><code>then</code> <code>plsql_sentence_n;</code>

<code>[</code><code>else</code> <code>plsql_sentence;]</code>

<code>end</code> <code>case</code><code>;</code>

selector:一個變量,用來存儲要檢測的值,通常稱之為選擇器。

該選擇器的值需要與 when 子句中的表達式的值進行比對。

expression_1:第一個 when 子句中的表達式,這種表達式通常是一個常量,當選擇器的值等于該表達式的值時,

程式将執行 plsql_setence_1 語句。

expression_2:第二個 when 子句中的表達式,這種表達式通常是一個常量,當選擇器的值等于該表達式的值時,

程式将執行 plsql_setence_2 語句。

expression_n:第 n 個 when 子句中的表達式,這種表達式通常是一個常量,當選擇器的值等于該表達式的值時,

程式将執行 plsql_setence_n 語句。

plsql_sentence:一個 PL/SQL 語句,當沒有與選擇器比對的 when 常量時,程式将執行該 PL/SQL 語句,

其所在的 else 語句是一個可選項。

例:

指定一個季度數值,然後使用 case 語句判斷它所包含的月份資訊并輸出。

代碼:

9

10

11

12

13

14

15

16

17

18

<code>declare</code>

<code>season </code><code>int</code><code>:=3;</code>

<code>aboutlnfo varchar2(50);</code>

<code>begin</code>

<code>case</code> <code>season</code>

<code>when</code> <code>1 </code><code>then</code>

<code>aboutlnfo := season||</code><code>'季度包括1,2,3 月份'</code><code>;</code>

<code>when</code> <code>2 </code><code>then</code>

<code>aboutinfo := season||</code><code>'季度包括4,5,6 月份'</code><code>;</code>

<code>when</code> <code>3 </code><code>then</code>

<code>aboutinfo := season||</code><code>'季度包括7,8,9 月份'</code><code>;</code>

<code>when</code> <code>4 </code><code>then</code>

<code>aboutinfo := season||</code><code>'季度包括10,11,12 月份'</code><code>;</code>

<code>aboutinfo := season||</code><code>'季節不合法'</code><code>;</code>

<code>dbms_output.put_line(aboutinfo);</code>

<code>end</code><code>;</code>

結果:3季度包括7,8,9 月份

循環語句

1. loop 語句

<code>loop</code>

<code>plsql_sentence;</code>

<code>exit </code><code>when</code> <code>end_condition_exp</code>

<code>end</code> <code>loop;</code>

plsql_sentence:循環體中的PL/SQL 語句。至少被執行一遍。

end_condition_exp:循環結束條件表達式,當該表達式為 true 時,則程式會退出循環體,否則程式将再次執行。

使用 loop 語句求得前 100 個自然數的和,并輸出到螢幕。

<code>SQL&gt; </code><code>set</code> <code>serveroutput </code><code>on</code><code>;</code>

<code>SQL&gt; </code><code>declare</code>

<code>sun_i </code><code>int</code><code>:=0;</code>

<code>i </code><code>int</code><code>:=0;</code>

<code>i:=i+1;</code>

<code>sum_i:=sum_i +1;</code>

<code>exit </code><code>when</code> <code>i =100;</code><code>--當循環 100次,程式退出循環體。</code>

<code>dbms_output.put_line(</code><code>'前100個自然數和:'</code><code>||sum_i);</code>

<code>/</code>

2. while 語句

<code>while condition_expression loop</code>

condition_expression: 表示一個條件表達式,但其值為 true 時,程式執行循環體。

否則 程式退出循環體,程式每次執行循環體之前,都判斷該表達式是否為 true。

plsql_sentence:循環内的plsql語句。

使用while 語句求得 前100 個自然數的和,并輸出到螢幕。

<code>declare</code> 

<code>sum_i </code><code>int</code><code>:=0;</code>

<code>while  i&lt;=99 loop</code>

<code> </code><code>i:=i+1;</code>

<code> </code><code>sum_i:=sum_i+1;</code>

<code>dbms_output.put_line(</code><code>'前100 個自然數的和是:'</code><code>||sum_i);</code>

3. for 語句

<code>for</code> <code>variable_counter_name </code><code>in</code> <code>[reverse] lower_limit..upper_limit loop</code>

variable_counter_name:表示一個變量,通常為整數類型,用來作為計數器。

預設情況下 計數器的值會遞增,當在循環中使用 reverse 關鍵字時,計數器的值會随循環遞減。

lower_limit:計數器下限值,當計數器的值小于下限值時,退出循環。

upper_limit:計數器上限值,當計數器的值大于上限值時,退出循環。

使用for語句求得前 100個自然數中偶數之和,并輸出到螢幕。

<code>sum_i </code><code>int</code><code>:= 0;</code>

<code>for</code> <code>i </code><code>in</code> <code>reverse 1..100 loop</code>

<code>if mod(i,2)=0 </code><code>then</code><code>--判斷是否為偶數</code>

<code> </code><code>sum_i:=sum_i+i;</code>

<code>dbms_output.put_line(</code><code>'前100個自然數中偶數和:'</code><code>||sum_i);</code>

<code></code>

本文轉自 SimplePoint 51CTO部落格,原文連結:http://blog.51cto.com/2226894115/1956460,如需轉載請自行聯系原作者