十五、Oracle中的PL/SQL 塊

目錄

 

15.1. PL/SQL 塊

15.2. Loop 循環(do…while)

15.3. while 循環 

15.4. for 循環 

15.5. IF 語句 

15.6. IF…ELSE 語句 

15.7. IF…ELSE…IF…ELSE 語句 

15.8. GOTO 語句


15.1. PL/SQL 塊

是在 SQL 語言之上發展起來的一種應用,可以集中的處理各種複雜的 SQL 操作。組成: 

 

DECLARE:  

聲明部分 

BEGIN  

編寫主題

EXCEPTION 

捕獲異常

END ;

圖一

 

圖二


15.2. Loop 循環(do…while)

PL/SQL 之中也包含了:循環、分支等條件控制語句

Loop 循環(do…while) 格式:

 LOOP   循環的語句; 

 EXITWHEN終止條件; 

 循環條件必須更改; 

END LOOP ;


循環輸出 1~10。

 DECLARE cou NUMBER ;

 BEGIN --必須給一個初始值

cou := 1 ; 

LOOP 

 DBMS_OUTPUT.put_line('cou = '||cou) ;

 EXIT WHEN cou>10 ;

  cou:= cou + 1 ; 

END LOOP ;

END ; -- 此循環是先執行一次之後再進行判斷

 


15.3. while 循環 

格式:

 while(判斷循環的條件)

loop  循環的語句; 

 循環條件的改變;

 Endloop ;

 

使用此語句修改上面的程序:

 DECLARE cou NUMBER ;

 BEGIN 

-- 必須給一個初始值

 cou:= 1 ; 

WHILE(cou<10)

LOOP  DBMS_OUTPUT.put_line('cou = '||cou) ;

  cou:= cou + 1 ; 

END LOOP ;

END ; / 此語句,是先判斷,之後如果條件滿足則執行,與 while 循環類似。

 


 

15.4. for 循環 

格式:

 FOR變量名稱 in 變量的初始值..結束值

LOOP  循環語句;

END LOOP ;

 


DECLARE cou NUMBER ;

BEGIN 

FOR cou IN 1..10

LOOP  DBMS_OUTPUT.put_line('cou = '||cou) ;

END LOOP ;

END ;

 


15.5. IF 語句 

 條件判斷格式:

 IF條件THEN  

滿足條件時,執行此語句 

END IF ;

 


DECLARE cou NUMBER ;

 BEGIN cou := 11 ; 

IF cou>10 THEN 

 DBMS_OUTPUT.put_line('cou = '||cou) ; 

END IF ;

END ;

 


15.6. IF…ELSE 語句 

 如果 IF 滿足了,則執行,否則執行ELSE

DECLARE cou NUMBER ;

BEGIN cou := 1 ; 

IF cou>10 THEN 

DBMS_OUTPUT.put_line('cou = '||cou) ; 

ELSE  

DBMS_OUTPUT.put_line('條件不滿足') ; 

END IF ;

END ;

 


15.7. IF…ELSE…IF…ELSE 語句 

DECLARE 

cou NUMBER ;

BEGIN cou := 1 ;

 IFcou>10 THEN 

 DBMS_OUTPUT.put_line('cou = '||cou) ;

 ELSIF cou<5 THEN  

DBMS_OUTPUT.put_line('值小於5') ;

 ELSE  DBMS_OUTPUT.put_line('條件不滿足') ;

 ENDIF ; END ;

 


15.8. GOTO 語句

 

無條件跳轉語句

 DECLARE eno emp.empno%TYPE ;

 salemp.sal%TYPE ;

BEGIN

 eno:= &en ;

 SELECT sal INTO sal FROM emp WHERE empno=eno;

  IFsal>3500 THEN  

goto po1 ;

 ELSIF

sal>2000 THEN 

 gotopo2 ; 

ELSE  goto po3 ; 

END IF ; 

<>  DBMS_OUTPUT.put_line('高工資。。。') ;

 <>   DBMS_OUTPUT.put_line('中等工資。。') ;

 <>   DBMS_OUTPUT.put_line('底工資。。。') ;

END ;

發佈了102 篇原創文章 · 獲贊 14 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章