首先我們先來看一個簡單的PL/SQL,主要分為兩個部分,Declare為定義變數的地方,Begin...End為程式邏輯的地方,也是主要撰寫著墨的部分。
DECLARE
v1 number(5);
v2 varchar2(10);
v3 date;
BEGIN
--to do
END;
1)除了常見的型態宣告外,還有為了避免宣告錯誤而可以採用「%type、%rowtype」來代替。差別在前者是宣告一個data item,而後者宣告一個record
DECLARE
v1 scott.emp.empno%type;
DECLARE
v1 scott.emp%rowtype;
2)if..then,利用條件判斷,當符合條件時,我們可以用dbms_output.put_line將結果output出來。
DECLARE
v1 varchar2(10):='IT';
BEGIN
if v1 = 'Sales' then
dbms_output.put_line('Sales');
elsif v1 = 'EE' then
dbms_output.put_line('EE');
else
dbms_output.put_line('IT');
End if;
END;
@這邊需要注意的是elsif,不是elseif
3)case是條件判斷的另一種寫法。相較於if..then,case提供更好的可讀性。
DECLARE
v1 varchar2(10):='IT';
BEGIN
case v1
when 'Sales' then
dbms_output.put_line('Sales');
when 'EE' then
dbms_output.put_line('EE');
else
dbms_output.put_line('IT');
End case;
END;
BEGIN
case v1
when 'Sales' then
dbms_output.put_line('Sales');
when 'EE' then
dbms_output.put_line('EE');
else
dbms_output.put_line('IT');
End case;
END;
4)for迴圈,利用迴圈,我們可以進行1+2...+10的運算,最後將結果output=55出來。
v1 varchar2(10):=0;
BEGIN
FOR i in 1..10
loop
v1 := v1 + i;
end loop;
dbms_output.put_line(v1);
END;
@這邊要注意的是變數指派是:=,不是=
5)while迴圈,改寫for迴圈進行1+2+..+10的運算。利用exit when i>10判斷迴圈是否終止。
DECLARE
v1 varchar2(10):=0;
i varchar2(10):=1;
BEGIN
while true
loop
v1 := v1 + i;
i := i + 1;
exit when i>10;
end loop;
dbms_output.put_line(v1);
END;