oracle复杂数据类型

数组:(下标从1开始)是变长数组,是在最大长度下变长。定义长度为10,可以只用1个,后续通过extend方法变长。但不能超过10个。

1、count:表示该数组实际包含的元素个数

2、limit:表示该数组可以包含的元素的最大个数

3、extend/extend(2,4):表示扩展该变长数组,该数组长度增加1/表示在集合中追加第4个元素的2个副本。

declare

type varray_type is VARRAY(10) of varchar2(20)/table_name.clomun%type;

v_array varray_type := varray_type('男','女','未知');/v_array varray_type := varray_type();

v_count integer:=0;

for i in v_list loop

v_count:=v_count+1;

v_array.extend;

v_array(v_count):=i;

end loop;

end;

record(记录):

基于表和基于游标的记录

v_record_table table_name%rowtype;--基于表

cursor test_cur is

select col1,col2,col3 from table_name where 1=1;--定义cursor

v_cursor_rec test_cur%rowtype;--基于游标的记录。(如果一张表中的字段很多,而我只需要少量字段是可以通过这个方式)

type type_name is record

(

field_name1 datatype1[not null][:=default expression],

field_name2 datatype2[not null][:=default expression],

field_name3 datatype3[not null][:=default expression]

);

record_name typt_name;--用户自定义record.

用户自己定义的record不能直接赋值。如:record_name1:=record_name2.(这时record_name1和record_name2必须是同一个type_name.否则即使他们有相同的结构也不行。)

基于表和基于游标的record_name可以赋值给用户自定义的record只要他们的结构相同就可以了。

嵌套记录:

type name_type is record(first_name varchar2(15),last_name varchar2(10));

type person_type is record(name name_type,street varchar2(50),city varcha2(25));

v_person_rec person_type;--嵌套记录

v_person_rec.name.first_name:='张';

v_person_rec.name.last_name:='学坏';

v_person_rec.street:='';

v_person_rec.city:=''上海;

记录集合:

type name_type is table of table_name/cur_name%rowtype index by binary_integer;

type name_type is table of varchar(10) index by pls_integer;

type name_type is table of number index by pls_integer;

v_name_tab name_type;

转载于:https://my.oschina.net/u/729507/blog/76887

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值