一、索引表
描述1、索引表只能作為pl/sql符合資料型別使用,而不能作為表列的資料型別使用。
2、索引表的下標可以為負值,索引表的下標沒有限制。
語法type index_table_type is table of element_type
index by varchar2|binary_integer|pls_integer
identifier type_name
例項例項一
declare
type ename_table_type is table of emp.ename%type
index by binary_integet
ename_table ename_table_type;
begin
select ename into ename_table(-1) from emp
where empno=&no;
dbms_output.put_line('雇員名:'||ename_table(-1));
end;
例項二declare
type area_table_type is table of number
index by varchar2(10);
area_table area_table_type;
begin
area_table('北京'):=1;
area_table('上海'):=2;
area_table('廣州'):=3;
dbms_output.put_line('第乙個元素:'||area_table.first);
dbms_output.put_line('最後乙個元素:'||area_table.last);
end;
二、巢狀表
描述1、巢狀表的元素下標從1開始,並且元素個數沒有限制。
2、巢狀表元素的陣列元素值可以是稀疏的。
3、巢狀表可以當作表中的列使用
語法一type type_name is table of element_type;
identifier type_name;
例項一declare
type ename_table_type is table of emp.ename%type;
ename_table ename_table_type:=ename_table_type('a','a');
例項二declare
type ename_table_type is table of emp.ename%type;
ename_table ename_table_type;
begin
ename_table:=ename_table_type('mary','mary','mary');
select ename info ename_table(2) from emp
where empno=&no;
dbms_output.put_line('雇員名:'||ename_table(2));
end;
語法二當使用巢狀表型別作為表列的資料型別時,必須要為巢狀表列指定專門的儲存表
create phone_type is table of varchar2(20);
/create table employee(
id number,
name varchar2(10),
sal number(6,2),
phone phone_type
)nested table phone store as phone_table;
例項三往巢狀表插入資料
begin
insert into employee values(1,'scott',800,
phone_type('0471-3456788','13804711111'));
end;
例項四檢索巢狀表列的資料
declare
phone_table phone_type;
begin
select phone into phone_table
from employee where id=1;
for i in 1..phone_table.count loop
dbms_output.put_line('**號碼:'||phone_table(i));
end loop;
end;
跟新巢狀表列的資料
declare
phone_table phone_type:=phone_type('0471-3456788',
'13804711111','0471-2233066','13056278568');
begin
update employee set phone=phone_table
where id=1;
end;
三、變長陣列
描述1、該資料型別與高階語言陣列非常相似,其元素下標以1開始,並且元素
2、的最大個數是有限制的。
語法一type type_name is varray(size_limit) of element_type [not null];
identifier type_name;
例項一declare
type ename_table_type is varray(20) of emp.ename%type;
ename_table ename_table_type:=ename_table_type('a','a');
例項二declare
type ename_table_type is varray(20) of emp.ename%type;
ename_table ename_table_type:=ename_table_type('mary');
begin
select ename into ename_table(1) from emp
where empno=&no;
dbms_output.put_line('雇員名:'||ename_table(1));
end;
PLSQL集合型別的使用總結
plsql集合型別的使用總結 在pl sql 中,集合 collection 是一組有序的元素組成的物件,這些元素的型別必須一致。pl sql 將collection 分成3 類,分別為associative arrays 也稱index by tables nested tables varray...
PL SQL 集合型別
建立乙個型別 create or replace type project is object project no number 2 title varchar2 35 cost number 7,2 建立乙個集合 create or replace type projectlist is tab...
PLSQL集合型別
plsql 集合型別 聯合陣列 索引表 用於儲存某個資料型別的資料集合型別 通過索引獲得聯合陣列中得值 如下例子 declare cursor cur chars is select chars from a 宣告游標 type str type is table of a.chars type 宣...