PL/SQL程序設計、流程控制
PL/SQL是 Procedure Language & Structured Query Language 的縮寫
PL/SQL是對SQL語言存儲過程語言的擴展
PL/SQL程序由三個塊組成,即聲明部分、執行部分、異常處理部分。
在語句塊的聲明部分對變量聲明,聲明一個變量的語法是:
variable_name [ constant ] type [ not null ] [:=value]
其中:
variable_name 為變量名
type 為類型
value 為變量的初值
PL/SQL結構
DECLARE
/* 聲明部分: 在此聲明PL/SQL用到的變量,類型及遊標,以及局部的存儲過程和函數 */
BEGIN
/* 執行部分: 過程及SQL 語句 , 即程序的主要部分 */
EXCEPTION
/* 執行異常部分: 錯誤處理 */
END;
PL/SQL的流程控制語句, 包括如下三類 :
條件語句: IF 語句 CASE語句
循環語句: LOOP語句, EXIT語句
順序語句: GOTO語句, NULL語句
IF語句的基本形式為 :
IF <布爾表達式> THEN
PL/SQL 和 SQL語句
END IF;
或
IF <布爾表達式> THEN
PL/SQL 和 SQL語句
ELSE
其它語句
END IF;
IF語句的復雜形式為 :
IF <布爾表達式> THEN
PL/SQL 和 SQL語句
ELSIF < 其它布爾表達式> THEN
其它語句
ELSIF < 其它布爾表達式> THEN
其它語句
…… ……
ELSE
其它語句
END IF;
CASE語句的基本形式為 :
CASE selector
WHEN expression1 THEN result1
WHEN expression2 THEN result2
WHEN expressionN THEN resultN
[ ELSE resultN+1]
END CASE;
循環語句
簡單循環語句的一般形式:
LOOP
要執行的語句;
EXIT WHEN <條件語句> /*條件滿足,退出循環語句*/
END LOOP;
其中:EXIT WHEN 子句是必須的,否則循環將無法停止。
WHILE 循環語句的一般形式:
WHILE <布爾表達式> LOOP
要執行的語句;
END LOOP;
FOR循環語句的一般形式:
FOR 循環計數器 IN [ REVERSE ] 下限 .. 上限 LOOP
要執行的語句;
END LOOP;
其中:
每循環一次,循環變量自動加1;使用關鍵字REVERSE,循環變量自動減1
跟在IN REVERSE 後面的數字必須是從小到大的順序,但不一定是整數,可以是能夠轉換成整數的變量或表達式
可以使用EXIT WHEN子句退出循環
綜合實例:
1 declare 2 v_no number(4) :=7369; --聲明並初始化變量 3 begin 4 select sal into v_no from emp where empno=v_no; 5 6 if v_no>300 then v_no:=100; --if--then 7 end if; 8 9 while v_no<=200 --while 10 loop 11 v_no := v_no+1; 12 dbms_output.put_line(v_no); 13 end loop; 14 15 for v_no in reverse 0 .. 200--for 16 loop --loop 17 18 dbms_output.put_line(v_no); 19 20 end loop; 21 end;
PL/SQL程序設計、流程控制