PL/SQL(Procedural Language/Structured Query Language)是Oracle推出的程序語言(Procedural Language),用來擴充SQL的的功能。PL/SQL中會運用到一些程式裡面變數設定、條件判斷(if..then)、迴圈(for)等概念。


首先我們先來看一個簡單的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


4)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;

 

4)for迴圈,利用迴圈,我們可以進行1+2...+10的運算,最後將結果output=55出來。


DECLARE

 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;

文章標籤
全站熱搜
創作者介紹
創作者 auneths 的頭像
auneths

Next Innovation

auneths 發表在 痞客邦 留言(0) 人氣(149)