選擇語句
1. if...then 語句
文法:
1
2
3
<code>if < condition_expression > </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 < condition_expression1 > </code><code>then</code>
<code>elsif < condition_expression2 > </code><code>then</code>
<code>...</code>
<code>plsql_sentence_n;</code>
4. case 語句
<code>case</code> <code>< selector ></code>
<code>when</code> <code><expression_1> </code><code>then</code> <code>plsql_sentence_1;</code>
<code>when</code> <code><expression_2> </code><code>then</code> <code>plsql_sentence_2;</code>
<code>when</code> <code><expression_n> </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> </code><code>set</code> <code>serveroutput </code><code>on</code><code>;</code>
<code>SQL> </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<=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,如需轉載請自行聯系原作者