《PL/SQL 語言開發參考手冊》之四:PL/SQL 控制語句
《PL/SQL 語言開發參考手冊》
1、條件陳述式
IF boolean_expression1(條件1) THEN<br /> ...<br /> ELSIF boolean_expression2(條件2) THEN /*注意是ELSIF,而不是ELSEIF*/<br /> ... /*ELSE語句(ELSIF)不是必須的,但END IF;是必須的*/<br /> ELSE<br /> ...<br /> END IF;
注意:
1)有多個 BOOLEAN 運算式時候 AND(與),OR(或),NOT(非)
2)條件為 FALSE 與 TRUE 相同;
2、迴圈語句
1)Loop 迴圈
Loop<br /> ... (迴圈體)<br /> IF boolean_expr(條件) THEN /* 加條件陳述式,當滿足條件時候退出迴圈*/<br /> EXIT; /* EXIT WHEN boolean_expr */<br /> END IF;<br /> END LOOP;
2)WHILE 迴圈
WHILE boolean_expr(條件) LOOP /* boolean_expr 迴圈條件*/<br /> ... (迴圈體)<br /> END LOOP;
3)FOR 迴圈
FOR loop_counter IN [REVERSE] low_bound..high_bound LOOP<br /> /* 範圍中間用2個點表示 從 low_blound 到 high_bound */<br /> ... (迴圈體)<br /> END LOOP;
例:
FOR v_cnt IN 1..5 LOOP<br /> SELECT * INTO v_emp FROM s_emp WHERE id = v_cnt;
註:
a、加上 REVERSE 關鍵字表示遞減,從結束邊界到起始邊界,遞減步長為一;不加為遞增,從起始邊界到結束邊界,遞減步長為一;
b、low_blound 起始邊界;high_bound 結束邊界;
3、GOTO 語句 GOTO label_name;
1)只能由內部塊跳往外部塊;
2)設定標籤:<< >>
3)樣本:
LOOP<br /> ...<br /> IF D%ROWCOUNT = 50 THEN<br /> GOTO l_close;<br /> END IF;<br /> ...<br /> END LOOP;<br /> <<l_close>>: ...
4、NULL 語句
在語句塊中加空語句,用於補充語句的完整性。
例:
IF boolean_expr THEN<br /> ...<br /> ELSE NULL;<br /> END IF;
5、SQL in PL/SQL
1)只有 DML SQL 和 transaction Control SQL 可以直接在 PL/SQL 中使用;
2)PL/SQL 中的動態 SQL 可以使用所有有效 SQL 陳述式,包括 DDL;
3)動態 SQL 在運行時動態產生 SQL 陳述式,然後分析語句並執行;
4)PL/SQL 中的動態 SQL 有兩種:本地動態 SQL 和 DBMS_SQL 包;