小議如果構造陣列

asword發表於2009-02-01
ZT PLSQL中構造自定義陣列[@more@]

1、一維陣列
SQL> set serveroutput on
SQL>
SQL> declare
2 type tvar_sz is varray(5) of number;
3 var_sz tvar_sz;
4 begin
5 var_sz := tvar_sz(1, 2, 3, 4, 5);
6 for i in 1 .. var_sz.count loop
7 dbms_output.put_line(var_sz(i));
8 end loop;
9 end;
10 /

1
2
3
4
5

PL/SQL procedure successfully completed
2、二維陣列
SQL> declare
2 type tvar_sz is varray(5) of number;
3 type v_sz is varray(4) of tvar_sz;
4 var_sz v_sz;
5 begin
6 var_sz := v_sz(tvar_sz(1, 2, 3, 4, 5),
7 tvar_sz(1, 2, 3, 4, 5),
8 tvar_sz(1, 2, 3, 4, 5),
9 tvar_sz(1, 2, 3, 4, 5));
10 for i in 1 .. var_sz.count loop
11 for j in 1 .. var_sz(i).count loop
12 dbms_output.put_line(var_sz(i) (j));
13 end loop;
14 end loop;
15 end;
16
17 /

1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5

PL/SQL procedure successfully completed
首先你需要定義一個陣列型別,然後定義這個陣列變數
declare
type a_type is table of number;
-- type a_type is array(10) of number;
-- 下面一種定義方式則指定了該陣列的最大元素個數

a a_type := a_type(); -- 定義並初始化一個陣列變數
begin
a.extend(3); -- 陣列擴充套件到3個元素
a(1) := 1;
a(2) := 10;
a(3) := 100;
end;

另外陣列還有一下方法和屬性
first -- 第一個元素下標
last -- 最後一個元素下標
count -- 陣列元素個數
prior(n) -- 下標 n 的前一個元素下標
next(n) -- 下標 n 後一個元素下標
extend(n) -- 新增 n 個陣列元素,不帶引數新增一個陣列元素
delete(n) -- 刪除陣列中下標為 n 的元素,不帶引數刪除整個陣列元素

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/82387/viewspace-1016562/,如需轉載,請註明出處,否則將追究法律責任。

相關文章