Oracle–plsql之控制結構

來源:互聯網
上載者:User
條件分支語句 • IF 語句: –IF-THEN-END IF –IF-THEN-ELSE-END IF –IF-THEN-ELSIF-END IF –case語句: • 迴圈語句 loop
文法: <pre name="code" class="plain">IF condition THEN statements; [ELSIF condition THEN statements;] [ELSE statements;] END IF; </pre><p>

condition     是一個布爾變數或運算式 (值為TRUE, FALSE或NULL) (僅當運算式為TRUE時執行
                     THEN 之後的語句)。
 
THEN     是一個子句,與前面的布林運算式相聯絡。
 
statements   是 若干個PL/SQL 或 SQL 陳述式 (語句中可能還有嵌套的IF 語句)。
ELSIF     這個關鍵字將引入一個布林運算式 (如果第一個條件結果為FALSE或NULL,ELSEIF 關鍵
                字將引出附加的選擇條件) 。
 
ELSE      如果IF條件不成立則執行ELSE關鍵字後面的語句。
 NULL的處理DECLARE • x number(2):= 5;<br />y number(2):= NULL;<br />BEGIN<br />IF x != y THEN<br /> dbms_output.put_line(100);<br />ELSE<br /> dbms_output.put_line(200);<br />END IF;<br />END;
 任何包含空值的算術運算式結果均為空白值。
 
 僅當變數值為NULL時,IS NULL 的傳回值是 TRUE 。
 
 可把空變數當作Null 字元串來串連運算式。

DECLARE<br /> x number(2):=null;<br /> y number(2):=null;<br /> begin<br /> if x!=y then<br /> dbms_output.put_line(100);<br /> else<br /> dbms_output.put_line(200);<br /> end if;<br /> end; </p><p>DECLARE<br /> x number(2):=null;<br /> y number(2):=null;<br /> begin<br /> if x=y then<br /> dbms_output.put_line(100);<br /> else<br /> dbms_output.put_line(200);<br /> end if;<br /> end;
都輸出200DECLARE<br /> x number(2):=5;<br /> y number(2):=null;<br /> begin<br /> if nvl(x,0)!=nvl(y,0) then<br /> dbms_output.put_line(100);<br /> else<br /> dbms_output.put_line(200);<br /> end if;<br /> end;
輸出100
邏輯表:
CASE語句

文法:CASE<br /> selector<br /> WHEN expression1 THEN result1<br /> WHEN expression2 THEN result2...<br /> WHEN expressionN THEN resultN<br /> [ELSE resultN+1;]<br />END;<br /><br />DECLARE<br /> v_var varchar2(10);<br /> v_deptno emp.deptno%type;<br />BEGIN<br /> SELECT deptno into v_deptno<br /> from emp<br /> where sal=(select max(sal) from emp);<br /> v_var:=<br /> case v_deptno<br /> when 10 then '部門1'<br /> when 20 then '部門2'<br /> else '部門3'<br /> END;<br /> dbms_output.put_line(v_var);<br />END;
迴圈控制: LOOP
語句

LOOP 語句有三種形式: Basic loop       無條件的迴圈 FOR loop         有計數的迴圈 WHILE loop       有條件的迴圈 –– EXIT 是強制結束迴圈的語句

BASIC LOOP:

無條件迴圈的特點是迴圈體至少執行一次
LOOP<br /> statement1; . . .<br />EXIT [WHEN condition];<br />END LOOP; FOR LOOP: FOR loop的結構大致與 Basic Loop相同。只是,
FOR loop語句的前端有一個控制語句,這個控制語句來決定PL/SQL執行迴圈的次數
FOR<br />counter in [REVERSE] lower_bound..upper_bound LOOP<br />statement1;<br />statement2;<br /> . . .<br />END LOOP;
WHILE LOOP: WHILE<br /> condition LOOP<br /> statement1;<br /> statement2;<br /> . . .<br />END LOOP;WHILE loop 是在條件為真的情況下迴圈執行一系列語句。 WHILE loop 迴圈是在執行一系列語句之前判斷條件即先判斷後執行。當條件為假時結束迴圈。如果一開始條件就為假,則一次也不執行這些代碼。
 
附註:如果條件為NULL,迴圈終止,控制跳到下一個語句。
GOTO語句: BEGIN<br /> dbms_output.put_line(1);<br /> GOTO l_last_line;<br /> dbms_output.put_line(2);<br />return;<br /><<l_last_line>><br />dbms_output.put_line(3);<br />END;•不能GOTO到嵌套塊內部的標籤 
•IF子句外部執行的語句,不能GOTO到IF子句內部的標籤 
•IF子句內部執行的語句,不能GOTO到另一個IF子句內部的標籤 
•不能從異常處理部分GOTO到代碼其它部分

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.