PL/SQL索引表

PL/SQL集合類型是類似於高級語言數組的一種符合數據類型,集合類型包括索引表(PL/SQL 表)、嵌套表(Nested Table)和變長數組(VARRAY)3種類型。

1.索引表

索引表也成爲PL/SQL表,用於處理PL/SQL數組的數據類型。但是索引表與高級語言的數組使用區別的:高級語言數組的元素個數是有限制的,並且下標不能爲負值;而索引表的元素個數沒有限制,並且下標可以爲負值。

定義索引表的語法如下:

TYPE type_name IS TABLE OF element_type
[NOT NULL] INDEX BY key_type;
identifier type_name;

其中各參數的含義如下:

type_name          用於指定用戶自定義數據類型的名稱

element_type     用於指定索引表元素的數據類型

NOT NULL          表示不允許引用NULL元素

key_type              用於指定索引表元素下標的數據類型

identifier              用於定義索引表變量

1.1 在索引表中使用BINARY_INTEGER和PLS_INTEGER

下面這個例子首先定義一個索引表類型,其中指定索引表下標的數據類型爲BINARY_INTEGER,然後定義一個索引表類型的變量用於存儲EMP表中ENAME的列值。

示例如下:

SQL> DECLARE
TYPE ename_table_type IS TABLE OF emp.name%TYPE
INDEX BY BINARY_INTEGER;--指定索引表元素下標的數據類型爲BINARY_INTEGER
ename_table ename_table_type;
Begin
Select ename Into ename_table(-1) From emp Where empno=7788;
DBMS_OUTPUT.PUTLINE('僱員號爲7788的僱員名爲'||ename_table(-1));
End;

1.2 在索引表中使用VARCHAR2

在定義索引表時,不僅允許使用BINARY_INTEGER和PLS_INTEGER作爲元素下標的數據類型,也允許使用VARCHAR2下標,可以在元素下標和元素值之間建立關聯,

示例如下:

SQL> DECLARE
TYPE area_table_type IS TABLE OF emp.name%TYPE INDEX BY VARCHAR2(10);--指定索引表元素下標的數據類型爲
area_table ename_table_type;
Begin
area_table('北京') :=1;
area_table('上海') :=2;
area_table('蘇州') :=3;
End;



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