
- PL/SQL 教程
- PL/SQL - 首頁
- PL/SQL - 概述
- PL/SQL - 環境
- PL/SQL - 基本語法
- PL/SQL - 資料型別
- PL/SQL - 變數
- PL/SQL - 常量和字面量
- PL/SQL - 運算子
- PL/SQL - 條件語句
- PL/SQL - 迴圈語句
- PL/SQL - 字串
- PL/SQL - 陣列
- PL/SQL - 過程
- PL/SQL - 函式
- PL/SQL - 遊標
- PL/SQL - 記錄
- PL/SQL - 異常處理
- PL/SQL - 觸發器
- PL/SQL - 包
- PL/SQL - 集合
- PL/SQL - 事務
- PL/SQL - 日期和時間
- PL/SQL - DBMS 輸出
- PL/SQL - 面向物件
- PL/SQL 有用資源
- PL/SQL - 問答
- PL/SQL - 快速指南
- PL/SQL - 有用資源
- PL/SQL - 討論
PL/SQL - 陣列
本章將討論 PL/SQL 中的陣列。PL/SQL 程式語言提供了一種稱為VARRAY的資料結構,它可以儲存大小固定的、相同型別的元素的順序集合。VARRAY 用於儲存有序的資料集合,但通常最好將陣列視為相同型別變數的集合。
所有 VARRAY 都由連續的記憶體位置組成。最低地址對應於第一個元素,最高地址對應於最後一個元素。

陣列是集合型別資料的一部分,它代表可變大小的陣列。我們將在後面的章節“PL/SQL 集合”中學習其他集合型別。
VARRAY中的每個元素都與一個索引相關聯。它還有一個可以動態更改的最大大小。
建立 VARRAY 型別
VARRAY 型別是使用CREATE TYPE語句建立的。您必須指定 VARRAY 的最大大小和儲存在 VARRAY 中的元素的型別。
在模式級別建立 VARRAY 型別的基本語法如下:
CREATE OR REPLACE TYPE varray_type_name IS VARRAY(n) of <element_type>
其中:
- varray_type_name 是一個有效的屬性名稱,
- n 是 VARRAY 中的元素數量(最大值),
- element_type 是陣列元素的資料型別。
可以使用ALTER TYPE語句更改 VARRAY 的最大大小。
例如:
CREATE Or REPLACE TYPE namearray AS VARRAY(3) OF VARCHAR2(10); / Type created.
在 PL/SQL 塊中建立 VARRAY 型別的基本語法如下:
TYPE varray_type_name IS VARRAY(n) of <element_type>
例如:
TYPE namearray IS VARRAY(5) OF VARCHAR2(10); Type grades IS VARRAY(5) OF INTEGER;
現在讓我們來看幾個例子來理解這個概念:
示例 1
以下程式演示了 VARRAY 的用法:
DECLARE type namesarray IS VARRAY(5) OF VARCHAR2(10); type grades IS VARRAY(5) OF INTEGER; names namesarray; marks grades; total integer; BEGIN names := namesarray('Kavita', 'Pritam', 'Ayan', 'Rishav', 'Aziz'); marks:= grades(98, 97, 78, 87, 92); total := names.count; dbms_output.put_line('Total '|| total || ' Students'); FOR i in 1 .. total LOOP dbms_output.put_line('Student: ' || names(i) || ' Marks: ' || marks(i)); END LOOP; END; /
在 SQL 提示符下執行上述程式碼時,將產生以下結果:
Total 5 Students Student: Kavita Marks: 98 Student: Pritam Marks: 97 Student: Ayan Marks: 78 Student: Rishav Marks: 87 Student: Aziz Marks: 92 PL/SQL procedure successfully completed.
請注意:
在 Oracle 環境中,VARRAY 的起始索引始終為 1。
您可以使用 VARRAY 型別的建構函式方法(與 VARRAY 同名)初始化 VARRAY 元素。
VARRAY 是一維陣列。
宣告 VARRAY 時,它會自動為空,並且必須在引用其元素之前進行初始化。
示例 2
VARRAY 的元素也可以是任何資料庫表的 %ROWTYPE 或任何資料庫表字段的 %TYPE。以下示例說明了該概念。
我們將使用儲存在資料庫中的 CUSTOMERS 表,如下所示:
Select * from customers; +----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ramesh | 32 | Ahmedabad | 2000.00 | | 2 | Khilan | 25 | Delhi | 1500.00 | | 3 | kaushik | 23 | Kota | 2000.00 | | 4 | Chaitali | 25 | Mumbai | 6500.00 | | 5 | Hardik | 27 | Bhopal | 8500.00 | | 6 | Komal | 22 | MP | 4500.00 | +----+----------+-----+-----------+----------+
以下示例使用了遊標,您將在單獨的章節中詳細學習。
DECLARE CURSOR c_customers is SELECT name FROM customers; type c_list is varray (6) of customers.name%type; name_list c_list := c_list(); counter integer :=0; BEGIN FOR n IN c_customers LOOP counter := counter + 1; name_list.extend; name_list(counter) := n.name; dbms_output.put_line('Customer('||counter ||'):'||name_list(counter)); END LOOP; END; /
在 SQL 提示符下執行上述程式碼時,將產生以下結果:
Customer(1): Ramesh Customer(2): Khilan Customer(3): kaushik Customer(4): Chaitali Customer(5): Hardik Customer(6): Komal PL/SQL procedure successfully completed.