PLSQL基礎知識點總結 (1)

分爲匿名塊和命名塊(函數、存儲過程、包、觸發器等)。

 

1.數據類型

數字類型:BINARY_INTEGER(二進制存儲)、NUMBER(十進制)等。

字符類型:CHAR、VARCHAR、VARCHAR2等。

存儲時,變長與定長,比較時,是否會自動縮減空格(也叫做填充比較和非填充比較)。

日期類型:DATE、TIMESTAMP等。

DATE不包含秒的小數部分,TIMESTAMP包含。

布爾類型:BOOLEAN。

True、false、null。

記錄類型:RECORD。

集合類型:TABLE。

等等其他類型。

 

 

2.控制結構

①if語句

If 條件 Then 執行語句;

Elsif 條件 then 執行語句;

Else 執行語句 ;

End if;

 

 

②case語句

Case 變量

When 值1 then 執行語句;

When 值2 then 執行語句;

。。。

End case;

 

或者是:

 

Case

When 條件1  then 執行語句;

When 條件2  then 執行語句;

....

End case;                           

 

同corejava中的switch,雖然沒有break語句,但是當滿足一個when的條件而執行其後的操作後,直接結束case語句塊。

 

 

3.循環結構

 

①簡單循環

 

Loop

...

Exit when 條件;

End loop;

 

 

 

 

②while循環

While 條件

Loop

....

End loop;

 

 

③for循環(普通for循環)

For  變量  in [reverse] 下界..上界

loop

....

End loop;

 

 

4.記錄類型、集合類型的定義

 

記錄類型record和集合類型table

表名persons

 

id

name

age

1

Mimi

16

2

Nini

19

3

Coco

18

 

記錄類型即爲表中所放的記錄的類型,集合類型可以看成放有n條記錄的一張表。這裏person是記錄類型,而persons這張表是集合類型。

 

不能理解的可以從corejava編程中進行聯想:

記錄類型就可看成是一個沒有方法只有屬性的自定義的類。

 

 

 

定義記錄類型:

Type record_type is record{

——————————————————

id number(6) default 100;

Name varchar2(20):= null;

——————————————————

};

 

 

而集合類型,顧名思義,將其看成是裝有n個基本類型變量或者是引用類型record_type的實例集合。

 

定義集合類型:

Type  table_name  is table of element_type

Index by binary_integer;

 

 

4.遊標

 

可當成  一個帶有指針的臨時性的表,而fetch出來的是以記錄爲單位的。聯想corejava,可以把遊標當成迭代器。

 

所以不要以爲定義遊標的時候select出來的僅有一個字段(如varchar2類的),fetch出來的類型就是該字段類型的,事實上fetch出來的是一個記錄、包含了select出來字段的一條記錄類型。

 

①定義遊標

Cursor  名字   is   select語句;

②打開遊標

Open 名字;

③檢索遊標

Fetch 名字 into 變量;

④關閉遊標

Close 名字;

 

5.異常

 

Declare

聲明異常(自定義異常、非預定義異常)

Begin

(執行體。條件判斷後,執行語句拋出自定義異常,同try)

Exception

 

When判斷異常(相當於corejava中的catch)

End;

 

 

PL/SQL中的異常,三類:

預定義異常、非預定義異常和用戶自定義異常。

 

非預定義異常:當pl/sql塊執行出現錯誤時,報錯一個錯誤號,爲了捕捉該錯誤,將錯誤號與異常關聯,即成非預定義異常。

 

 

異常名  exception;

Pragma exception_init(異常名,錯誤號);

 

 

 

6.存儲過程和函數

存儲過程:

Create [ or replace ] Procedure 名(參數列表)

As|is

聲明部分

Begin

。。。。

[exception] End [名];

 

 

函數:

Create [ or replace ] function 名(參數列表)

Return 類型

As|is

聲明部分

Begin

。。。。

[exception] End [名];

 

 

參數列表中參數的聲明:

參數名       參數模式         參數類型

 Id        in | out | in out    number

 

默認時,爲in,參數可爲變量或者常量。

另外兩種,必須爲變量。

 

存儲過程和函數的區別主要在返回值上。存儲過程並非是沒有返回,可以通過參數返回返回值的,自身不具有返回,即沒有顯示的返回。而函數除了參數列表的參數有返回能力以外,還有一個顯式的返回值,即自身返回值。

 

 

7.包

包分爲包規範和包體。包即是將相關的pl/sql元素組織在一起,打包。

 

包體的實現一定要先定義包規範。

包可以只有規範,而沒有包體。

 

包規範:

Create or replace package 名字

Is|as

...(元素聲明)

如:Procedure 名字(參數列表);

End [名字];

 

包體:

Create or replace package body名字

Is|as

...(元素)

End [名字];


原文地址:http://blog.csdn.net/chenhaijing/article/details/5399129

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章