編寫控制結構:順序結構,條件結構,循環結構
一。條件語句:
1。與delphi或者java,或者其他任何語言的條件語句基本一樣咯:
單條件:
IF condition THEN
? ......
END IF;
雙條件:
IF condition THEN
? ......
ELSE
? ...
END IF;
多條件:
IF condition THEN
?? ...
ELSEIF conditon THEN
?? ....
ELSEIF conditon THEN
?? ....
ELSE
?? ....
END IF;
?
舉例:
DECLARE
??v_sal?
NUMBER
(
6
,
2
);
??v_id?
NUMBER
;
BEGIN
??v_id:
=
'
&id
'
;
??
SELECT
?salary?
into
?v_sal?
FROM
?employee
??
WHERE
?id
=
v_id;
??
IF
?v_sal
<
4000
?
THEN
?????
update
?employee?
set
?salary
=
(v_sal
+
100
)?
where
?id
=
v_id;
??
ELSE
?????
update
?employee?
set
?salary
=
(v_sal
-
900
)?
where
?id
=
v_id;
??
END
?
IF
;
END
;

二。CASE語句:
各種語言的switch ...case語句相同,只不過沒有switch關鍵字。
1。使用單一選擇符進行比較:
?
CASE
?selector

??
WHEN
?expression1?
THEN
?
;

??
WHEN
?expression?
2
?
THEN
?
;

??
?
END CASE;
2。多種條件比較:
?
CASE
??
WHEN
?condition1?
THEN
?
;

??
WHEN
?condition2?
THEN
?
;

??
WHEN
?condition3?
THEN
?
;

END CASE;
??
?
?
(三)循環語句:
3種循環:
1。基本循環,至少執行一次:
LOOP
?? statement1;
???...
?? EXIT WHEN 退出循環條件;
END LOOP1;
例如:
?
LOOP

??
insert
?
into
?employee(id,name)?
values
(i,
'
dennis
'
);

??i:
=
i
+
1
;

??
EXIT
?
WHEN
?i
>
10
;

END
?LOOP;
?
2。while循環:
WHILE conditon1 LOOP
?? statement1;
?? ...
END LOOP;
比如上面的例子改寫為:
?
WHILE
?i
<=
10
?LOOP

???
insert
?
into
?employee(id,name)?
values
(i,
'
dennis
'
);?

???i:
=
i
+
1
;

END
?LOOP;
?
3。FOR循環,類似于ruby的FOR循環:
FOR counter IN [REVERSE] 下限..上限 LOOP
? statement1;
??...
END LOOP;
REVERSE參數可選,有的話表示從上限往下限遞減。
?
(四)順序控制語句
PL/SQL也提供了GOTO和NULL語句用于控制語句執行順序,GOTO語句與JAVA的機制相似,通過label來實現跳轉,盡量不要使用。NULL語句不會執行任何操作,它的存在主要是為了提高程序的可讀性。?