變長數(shù)組
變長數(shù)組是一種元素數(shù)量可以從零到聲明的最大長度的數(shù)組。
語法
TYPE type_name IS VARRAY '(' number ')' OF datatype [NULL | NOT NULL] ';'
示例
變長數(shù)組的基本示例如下所示:
DECLARE
TYPE varray_type IS VARRAY(10) OF INT; -- 聲明 varray 局部類型
v varray_type := varray_type(); -- 創(chuàng)建變量, 并將它初始化為空
BEGIN
v.extend(1); -- 擴建它的大小, 之后允許在索引為1的位置上賦值和取值
v(1) := 1; -- 賦值
RAISE NOTICE '%', v(1); -- 取值
END;
結(jié)果顯示如下:
NOTICE: 1
DO
該語法指定了您創(chuàng)建的類型名稱、變長數(shù)組的最大長度和元素類型。您可以使用該類型創(chuàng)建變量。以下是創(chuàng)建變長數(shù)組變量的一個示例:
DECLARE
TYPE varray_type IS VARRAY(10) OF INT; -- 聲明 varray 局部類型
v varray_type; -- 創(chuàng)建變量但不初始化, 此時狀態(tài)為 NULL
v varray_type := varray_type(); -- 創(chuàng)建變量, 并將它初始化為空,實際長度為0
v varray_type := varray_type(1, 2); -- 創(chuàng)建變量, 并初始化兩個元素, 實際長度為2
BEGIN
END;
您必須通過extend
方法或是直接在初始化時分配出對應(yīng)的位置,然后才可以對該位置進行賦值和取值。變長數(shù)組的索引下標的下界為1,上界為當前存儲的元素個數(shù)。存儲的元素個數(shù)不能超過設(shè)定的最大值。如果您試圖分配超過最大長度的位置,PL/SQL會出現(xiàn)如下錯誤:
DECLARE
TYPE varray_type IS VARRAY(10) OF INT;
v varray_type := varray_type();
BEGIN
v.extend(11); -- 分配11個位置
END;
結(jié)果顯示如下:
ERROR: new varray size: 11 must be smaller than limit size: 10
CONTEXT: SQL statement "CALL v.extend(11)"
PL/SQL function inline_code_block line 5 at CALL
元素類型可以是普通類型(例如,int,varchar等),也可以是記錄類型。
DECLARE
TYPE record_type IS RECORD(id INT, name VARCHAR(10));
TYPE varray_type IS VARRAY(10) OF record_type;
v varray_type := varray_type();
BEGIN
v.extend(1);
v(1).id := 1;
v(1).name := 'a';
RAISE NOTICE '% %', v(1).id, v(1).name;
END;
結(jié)果顯示如下:
NOTICE: 1 a
DO
文檔內(nèi)容是否對您有幫助?