复合类型 :包含多个元素、存储多个值

--复合类型 :包含多个元素、存储多个值
--01 记录类型

set serveroutput on --打开输出功能
declare
type readerinfo_rc is record --声明记录类型的具体结构
(
v_readerid number(4),
v_readername varchar2(10),
v_unit varchar2(50)
);

v_readerinfo_rc readerinfo_rc;---声明一个变量v_readerinfo_rc,该变量的数据类型为readerinfo_rc,也就是记录类型
begin
select readerid,readername,unit
into v_readerinfo_rc
from readerinfo
where readerid=9701;

dbms_output.put_line('v_readerid= ' || v_readerinfo_rc.v_readerid); --如何提取变量中的数据,
dbms_output.put_line('v_readername= ' || v_readerinfo_rc.v_readername);--提取数据使用“变量名称.成员名称”
dbms_output.put_line('v_unit= ' || v_readerinfo_rc.v_unit);
end;
/
--利用%rowtype 指明数据类型,存储数据
declare
v_readerinfo_rc readerinfo%ROWTYPE;--声明该变量的数据类型为readerinfo表的行类型
begin
select *--readerid,readername,unit
into v_readerinfo_rc
from readerinfo
where readerid=9701;

dbms_output.put_line('v_readerid = ' || v_readerinfo_rc.readerid);
dbms_output.put_line('v_readername= ' || v_readerinfo_rc.readername);
dbms_output.put_line('v_unit= ' || v_readerinfo_rc.unit);
end;

---02 索引表类型 :与数组相似,成为关联数组
declare
type binary_inx_fst is table of readerinfo%rowtype
index by binary_integer;--创建binary_inx_fst的索引表,以binary_integer类型为索引类型;

v_inx_bnary binary_inx_fst;---声明索引表类型的变量

begin
select * into v_inx_bnary(1)
from readerinfo
where readerid=9701;

dbms_output.put_line('v_inx_bnary 的值 =' || v_inx_bnary(1).readerid || '---'
|| v_inx_bnary(1).readername || '---'
|| v_inx_bnary(1).unit);
end;

--03 VARRAY变长数组类型:数组的下标会从1开始
declare
type varrary is varray(50) of varchar2(20);

v_varr varrary:=varrary('1','2','3');
begin
v_varr(1):='我是';
v_varr(3):='数组';
v_varr(2):='变长';

dbms_output.put_line('v_varr(1) =' || v_varr(1));
dbms_output.put_line('v_varr(2) =' || v_varr(2));
dbms_output.put_line('v_varr(3) =' || v_varr(3));
end;











原文地址:https://www.cnblogs.com/empty01/p/5581902.html