1. 程式人生 > >PL/SQL程序設計、流程控制

PL/SQL程序設計、流程控制

循環 其它 nbsp bsp lin ever lar if 語句 gin

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程序設計、流程控制