PLSQL集合總結

2021-08-25 01:39:32 字數 3070 閱讀 9009

一、索引表

描述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 宣...