一、固定數組 1、在模式(schema)級創建VARRAY類型 語法: 其中, varray_type_name是一個有效的屬性名稱; n是varray中元素的數量(最大值); element_type是數組元素的數據類型。 可以使用ALTER TYPE語句更改變數的最大大小。 實例: 備註:在Or ...
一、固定數組
1、在模式(schema)級創建VARRAY
類型
語法:
CREATE OR REPLACE TYPE varray_type_name IS VARRAY(n) OF <element_type>
其中,
varray_type_name
是一個有效的屬性名稱;n
是varray
中元素的數量(最大值);element_type
是數組元素的數據類型。
可以使用ALTER TYPE
語句更改變數的最大大小。
實例:
CREATE OR REPLACE TYPE namesarray IS VARRAY(3) OF VARCHAR2(10);
備註:在Oracle中,一個用戶就是一個Schema,表都是建立在Schema中的,也可以理解為每個用戶擁有不同的表。一個用戶想訪問另外一個用戶,也就是另外一個schema的表的時候,可以用 username.tablename的形式來訪問。
2、在PL/SQL塊中創建VARRAY
類型
語法:
TYPE varray_type_name IS VARRAY(n) OF <element_type>
實例:
DECLARE TYPE namesarray IS VARRAY(5) OF VARCHAR2(10); TYPE gradesarray IS VARRAY(5) OF INTEGER; names namesarray; marks gradesarray; total INTEGER; BEGIN names := namesarray('Kavita', 'Pritam', 'Ayan', 'Rishav', 'Aziz'); marks := gradesarray(98, 97, 78, 87, 92); total := names.count; dbms_output.put_line('總共有 '|| total || ' 名學生'); FOR i IN 1 .. total LOOP dbms_output.put_line('姓名: ' || names(i) || ' 成績: ' || marks(i)); END LOOP; END; 結果: 總共有 5 名學生 姓名: Kavita 成績: 98 姓名: Pritam 成績: 97 姓名: Ayan 成績: 78 姓名: Rishav 成績: 87 姓名: Aziz 成績: 92
註意:
- 在Oracle環境中,varrays的起始索引始終為1;
- 可以使用varray類型的構造方法初始化varray元素,該方法與varray具有相同的名稱;
- varrays是一維數組;
- varray在聲明時自動為NULL,並且必須在引用元素之前初始化它。
二、可變數組
DECLARE TYPE ORG_TABLE_TYPE IS TABLE OF VARCHAR2(25) INDEX BY BINARY_INTEGER; V_ORG_TABLE ORG_TABLE_TYPE; BEGIN V_ORG_TABLE(1) := '1'; V_ORG_TABLE(2) := '2'; V_ORG_TABLE(3) := '3'; V_ORG_TABLE(4) := '4'; V_ORG_TABLE(5) := '5'; FOR i IN V_ORG_TABLE.first .. V_ORG_TABLE.last LOOP dbms_output.put_line(V_ORG_TABLE(i)); END LOOP; END;