PLSQL的迴圈控制

2021-07-14 23:25:30 字數 4577 閱讀 1572

1.if 

declare

v_count number (10) := 0; --定義計數器變數

v_empno number (4) := 7888; --定義員工編號

begin

select count (1) --首先查詢指定的員工編號是否存在

into v_count

from emp

where empno = v_empno;

--使用if語句判斷,如果員工編號不存在,結果為0

if v_count = 0

then

--則執行insert語句,插入新的員工記錄

insert into emp

(empno, ename, job, hiredate, sal, deptno

)values (v_empno, '張三', '經理', trunc (sysdate), 1000, 20

);end if;

--向資料庫提交更改

commit;

exception

when others

then

dbms_output.put_line (sqlerrm); --輸出異常資訊

end;

2.if elseif else

declare

v_character char(1) :=&tmpvar; --定義替換變數

begin

if v_character = 'a' --判斷字元是否為'a',如果不是,則跳到下乙個elsif

then

dbms_output.put_line ('當前輸出字串:' || v_character);

elsif v_character = 'b' --判斷字元是否為'b',如果不是,則跳到下乙個elsif

then

dbms_output.put_line ('當前輸出字串:' || v_character);

elsif v_character = 'c' --判斷字元是否為'c',如果不是,則跳到下乙個elsif

then

dbms_output.put_line ('當前輸出字串:' || v_character);

elsif v_character = 'd' --判斷字元是否為'd',如果不是,則跳到else語句

then

dbms_output.put_line ('當前輸出字串:' || v_character);

else

dbms_output.put_line ('不是a-d之間的字元');

end if;

end;

3.case

/* formatted on 2011/08/16 15:59 (formatter plus v4.8.8) */

declare

v_job varchar2 (30); --定義儲存case選擇器的字元型變數

v_empno number (4) := &empno; --定義用來查詢員工的員工編號

begin

select job --獲取選擇器v_job的值

into v_job

from emp

where empno = v_empno;

--當指定了case的選擇器為v_job後,所有的when子句的型別必須匹配為varchar2型別

case v_job

when 'clerk'

then

update emp

set sal = sal * (1 + 0.15)

where empno = v_empno;

dbms_output.put_line ('為普通職員加薪15%');

when 'analyst'

then

update emp

set sal = sal * (1 + 0.18)

where empno = v_empno;

dbms_output.put_line ('為分析人員加薪18%');

when 'manager'

then

update emp

set sal = sal * (1 + 0.20)

where empno = v_empno;

dbms_output.put_line ('為管理人員加薪20%');

when 'salesman'

then

update emp

set sal = sal * (1 + 0.22)

where empno = v_empno;

dbms_output.put_line ('為銷售人員加薪22%');

else --使用else語句顯示資訊

dbms_output.put_line ('員工職級不在加薪的行列!');

end case; --終止case語句塊

end;

4.loop

declare

v_count number (2) := 0; --定義迴圈計數變數

begin

loop --開始執行迴圈

v_count := v_count + 1; --迴圈計數器加1

--列印字元資訊

dbms_output.put_line ('行' || v_count || ':hello pl/sql!');

--如果計數條件為10,則退出迴圈

if v_count = 10

then

exit; --使用exit退出迴圈

end if;

end loop;

--迴圈退出後,將執行這條語句

dbms_output.put_line ('迴圈已經退出了!');

end;

declare

v_count number (2) := 0; --定義迴圈計數變數

begin

loop --開始執行迴圈

v_count := v_count + 1; --迴圈計數器加1

--列印字元資訊

dbms_output.put_line ('行' || v_count || ':hello pl/sql!');

--如果計數條件為10,則退出迴圈

exit when v_count=10;

end loop;

--迴圈退出後,將執行這條語句

dbms_output.put_line ('迴圈已經退出了!');

end;

5.while loop

/* formatted on 2011/08/17 09:11 (formatter plus v4.8.8) */

declare

counter number := 1; --定義計數器變數

begin

while (counter < 10) --判斷迴圈的條件為counter<10

loop

dbms_output.put_line ('計數器 [' || counter || '].');

if counter >= 1 --如果迴圈計數器大於等於1

then

counter := counter + 1; --將迴圈計數器加1

end if;

end loop;

end;

/

6.for loop

/* formatted on 2011/08/17 20:47 (formatter plus v4.8.8) */

declare

v_total integer := 0; --迴圈累計彙總數字

begin

for i in 1 .. 3 --使用for迴圈開始迴圈計數

loop

v_total := v_total + 1; --彙總累加

dbms_output.put_line ('迴圈計數器值:' || i);

end loop;

--輸出迴圈結果值

dbms_output.put_line ('迴圈總計:' || v_total);

end;

PL SQL 迴圈控制語句

判斷語句 if.else declare v age number not null 50 beginif0 v age and v age 18 then dbms output.put line 兒童 elsif 18 v age and v age 30 then dbms output.pu...

PL SQL學習筆記 迴圈控制與順序控制

一 loop.end loop 先看 declare v flag number 1 begin loop exit when v flag 16 v flag v flag 1 dbms output.put line to char v flag end loop end 其中exit when...

PL SQL學習筆記 迴圈控制與順序控制(四)

一 loop.end loop 先看 declare v flag number 1 begin loop exit when v flag 16 v flag v flag 1 dbms output.put line to char v flag end loop end 其中exit when...