Oracle集合的基本用法

本文通过实例展示了PL/SQL中不同类型的数组使用方法,包括关联数组、嵌套表及Varray的创建与操作过程。这些示例有助于理解如何在Oracle数据库存储过程中高效地管理数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--关联数组
declare
type list_of_ctrys is table of t_mt_ctry.cd%type
index by pls_integer;
ctrys list_of_ctrys;
l_row pls_integer;
begin

ctrys(10) := 'CN';
ctrys(1000) := 'US';
ctrys(-10) := 'JP';
ctrys(50) := 'MY';

l_row := ctrys.first;
dbms_output.put_line('l_row ' || l_row);
while l_row is not null
loop
dbms_output.put_line(ctrys(l_row));
l_row := ctrys.next(l_row);
end loop;

end;

--嵌套表
create or replace type list_of_names is table of varchar2(100);

declare 

family_names list_of_names := list_of_names();
parent_names list_of_names := list_of_names();
children_names list_of_names := list_of_names();

begin
family_names.extend(4);
family_names(1) := 'zhangsan';
family_names(2) := 'zhanglisi';
family_names(3) := 'zhangwangwu';
family_names(4) := 'wangwu';

parent_names.extend;
parent_names(1) := 'zhangsan';
parent_names.extend;
parent_names(2) := 'wangwu';

children_names := family_names multiset except parent_names;

for i in children_names.first .. children_names.last
loop
dbms_output.put_line(children_names(i));
end loop;

end;

--zhanglisi
--zhangwangwu


--Varray

create or replace type parent_names is varray(2) of varchar2(20);
create or replace type children_names is varray(1) of varchar2(20);

create table family(
   family_no integer,
   parents parent_names,
   children children_names
);

declare
parents parent_names := parent_names();
children children_names := children_names();
begin
parents.extend(2);
parents(1) := 'zhangsan';
parents(2) := 'lisi';

children.extend;
children(1) := 'zhangyi';

insert into family(family_no,parents,children) values(1,parents,children);
end;

select * from family;


Varray的查询结果:

235148_0zRf_617909.png 

转载于:https://my.oschina.net/u/617909/blog/385077

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值