表類型變數又稱index_by表或則PL/SQL表,和資料表是有區別的,是類似於數組的鍵和值的兩列結構。
其定義文法如下:
type 表類型名 is table of 類型 index by binary_integer;
表變數名 表類型;
類型可以是number 、varchar2、date 等資料類型,index by binary_integer 子句代表以符號整數為索引,
這樣訪問表類型變數中的資料方法就是“表變數名(索引符號整數)”,注意與數組不同的是該索引可以是不連續的,而且與資料庫表不同
不能在index-by 表中使用select、insert、update 等sql操作。
下面的程式定義了名為tabletype1和tabletype2的兩個一維表類型,相當於一維數組。table1和table2分別是兩種表類型變數。
Declare
type tabletype1 is table of varchar2(10) index by binary_integer;
type tabletype2 is table of scott.testtable.recordnumber%type index by binary_integer;
table1 tabletype1;
table2 tabletype2;
begin
table1(1):='大學';
table1(2):='大專';
table2(1):=88;
table2(2):=55;
dbms_output.put_line(table1(1)||table2(1));
dbms_output.put_line(table1(2)||table2(2));
end;
定義多維表類型變數 :
Declare
type tabletype1 is table of testtable%rowtype index by binary_integer;
table1 tabletype1;
begin
select * into table1(60)
from scott.testtable
where recordnumber=60;
dbms_output.put_line(table1(60).recordnumber||' '||table1(60).currentdate);
end;
該程式定義了名為tabletype1的多維表類型,相當於多維陣列,table1是多維表類型變數,將資料表tempuser.testtable中recordnumber為60的記錄提取出來存放在table1中並顯示
在定義好的表類型變數裡,可以使用count、delete、first、last、next、exists和prior等屬性進行操作,使用方法為“表變數名.屬性”,返回的是數字。