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...