ORACLE集合資料型別知識整理 sql

2021-06-25 18:57:36 字數 2167 閱讀 3349

-- 定義陣列的大小200,以及所能儲存的最大位元組數2000

create or replace type va_planguage is varray(200) of varchar2(2000);

declare

lang va_planguage;

begin

lang:=va_planguage('可變陣列中的資料one','可變陣列中的資料two','可變陣列中的資料three');

for i in 1..lang.count loop

dbms_output.put_line(lang(i));

end loop;

end;

-- 巢狀表nested table的宣告及初始化(乙個漢字兩個位元組)

create or replace type nt_planguage is table of varchar2(19);

declare

lang nt_planguage;

begin

lang:=nt_planguage('巢狀表測試資料one','巢狀表測試資料two','巢狀表測試資料three');

for i in 1..lang.count loop

dbms_output.put_line(lang(i));

end loop;

end;

-- 關聯陣列associative array(index_by table)宣告與初始化測試

declare

type ib_planguage is table of varchar2(1000) index by pls_integer;

lang ib_planguage;

idx pls_integer;

begin

lang(1):='關聯陣列one';

lang(9):='關聯陣列two';

lang(3):='關聯陣列three';

idx:=lang.first;

while(idx is not null) loop

dbms_output.put_line(lang(idx));

idx:=lang.next(idx);

end loop;

end; /*

oracle支援3種型別的集合:

關聯陣列(associative array,即index-by table)

巢狀表(nested table)

變長陣列(varray)

它們的區別之一是: nested table與varry既可以被用於pl/sql,也可以被直接用於資料庫中,

但是associative array不行,

也就是說,associative array是不能通過create type語句進行單獨建立,

只能在pl/sql塊(或package)中進行定義並使用(即適用範圍是pl/sql block級別),

而nested table與varray則可以使用create type進行建立(即適用範圍是schema級別),

它們還可以直接作為資料庫表中列的型別。

associative array的索引可以是稀疏的(即可以不連續)。

nested table既可以通過create type宣告成全域性型別,也可以在pl/sql塊中宣告塊級別的型別。

與associative array不同,nested table變數需要顯式初始化

nested table初始化之後還需要呼叫extend過程,擴充套件此集合的「容量」。

1)varray可以在宣告時限制集合的長度,

extend的長度不能大於集合宣告時的長度,

但是在給集合成員賦值時,以extend為準

(2)其索引總是連續的,而nested table的索引在初始化賦值時是連續的,

不過隨著集合元素被刪除,可能變得不連續。

通常來說,對集合型別的第一選擇應該是associative array,

因為它不需要初始化或者extend操作,並且是迄今為止最高效的集合型別。

唯一不足的一點是它只能用於pl/sql而不能直接用於資料庫。

如果需要允許使用負數索引,應該選擇associative array;

如果需要使用10g,11g中的那些集合操作,應該選擇nested table;

如果需要限制集合元素的個數,應該選擇varray */

集合資料型別

集合用大括號 表示,元素間用逗號分隔 建立集合型別用 或者set 建立空集合型別,必須用set 集合中每個元素必須唯一,不存在相同元素 集合中的元素之間無序 a b a和b中的所有的元素 a b 包含a但是不包含b的元素 a b 同時屬於a和b的元素 a b 包含ab中不相同的元素 a b或a b或...

oracle復合資料型別

type用於定於不確定的資料型別 declare v fd change left ekp change.fd change left type v id是表name的id的資料型別 v fd change total ekp change.fd change total type begin se...

Python的集合資料型別

元組集合 字典對比 列表 模擬字串 有序元素集合 通過索引訪問 單個索引i 2 區間索引i 3 列表元素型別可不同 l1 l2 合併,連線 l1 2,重複兩次 len l 返回元素個數 x in list 返回true or false l1.sort 排序從小到大 l2.reverse 倒序 l1...