oracle 集合的类型

集合的类型有三种:关联数组,varry,嵌套表




关联数组
只在PL/SQL中有效,无需初始化


----------下标可以使用pls_integer
declare
type a is table of varchar2(10) index by pls_integer;
l_row pls_integer;
name a;
begin
name(1):='jim';
name(2):='Wolf';
name(3):='Candy';


l_row:=name.first;


loop
exit when l_row is null;
dbms_output.put_line(name(l_row));
l_row:=name.next(l_row);
end loop;
end;
/
----------下标可以使用varchar2


declare
type a is table of varchar2(10) index by varchar2(10);
l_row pls_integer;
age a;
begin
age('Jim'):=22;
age('Wolf'):=32;
dbms_output.put_line(age('Jim'));
end;
/


嵌套表
可作为模式级别数据类型,运用于SQL


--------------------用法一
declare
type a is table of varchar2(10);
name a:=a();
begin
name.extend(3);
name(1):='Jim';
name(2):='Bonie';
name(3):='Elena';
dbms_output.put_line(name(1));
end;
/


--------------------用法二  将嵌套表的字段类型以SQL表的形式输出
create type a is table of varchar2(10);


drop table test;
create table test(
family varchar2(10)
,name a
)
nested table name store as name_1
;




declare
name a:=a();
begin
name.extend(3);
name(1):='Jim';
name(2):='Bonie';
name(3):='Elena';
insert into test(family,name) values('f_wang',name);
end;
/


select * from table(select name from test);




----------------用法三  将嵌套表类型转换SQL表形式的数据


declare
name a:=a();
name_1 varchar2(20);
cur_1 sys_refcursor;
begin
name.extend(3);
name(1):='Jim';
name(2):='Bonie';
name(3):='Elena';
open cur_1 for select * from table(name);
loop
fetch cur_1 into name_1;
exit when cur_1%notfound;
dbms_output.put_line(name_1);
end loop;
end;
/















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值