达梦数据库常规数据类型总结之二

集合类型

1.VARRAY是一种具有可伸缩性的数组,数组中的每个元素具有相同的数据类型。

语法:

TYPE<数组名> IS VARRAY(<常量表达式>) OF <数据类型>;

例子:DECLARE
    TYPE MY_ARRAY_TYPE IS VARRAY(10) of varchar(100);
    v my_array_type;
    begin
       v:=my_array_type();
         print 'v.count()='||v.count();
         for i in 1..8 loop
               v.extend();
                    select name into v(I) from person where id=i;
                    END LOOP;
PRINT 'v.COUNT()=' || v.COUNT();
FOR I IN 1..v.COUNT() LOOP
PRINT 'v(' || i || ')=' ||v(i);
END LOOP;
END;

结果:

v.count()=0
v.COUNT()=8
v(1)=aa
v(2)=bb
v(3)=cc
v(4)=dd
v(5)=ee
v(6)=ff
v(7)=gg
v(8)=hh

影响了1条记录

1条语句执行成功

2.索引表提供了一种快速、方便地管理一组相关数据的方法。索引表不需要用户指定大小,其大小根据用户的操作自动增长。

语法:

TYPE <索引表名> IS TABLE OF<数据类型> INDEX BY <索引数据类型>;

例子:

DECLARE
TYPE Arr IS TABLE OF VARCHAR(100) INDEX BY INT;
x Arr;
BEGIN
x(1) := 'TEST1';
x(2) := 'TEST2';
x(3) := x(1) || x(2);
PRINT x(3);
END;

结果:

TEST1TEST2
3.嵌套表:嵌套表类似于一维数组,但与数组不同的是,嵌套表不需要指定元素的个数,其大小可自动扩展。嵌套表元素的下标从1开始。

语法:

TYPE <嵌套表名> IS TABLE OF <元素数据类型>;

例子:

DECLARE
    TYPE info_t IS table of SYSDBA.PERSON.NAME %TYPE;
    i number:=0;
    cursor c_name is select name from PERSON;
    info info_t:=info_t();
    begin
        for aname in  c_name loop
        i:=i+1;
          info.extend;
             info(i):=aname.name;
             print (aname.name);
             end loop;
             for j in 1..info.count() loop
                  print(info(j));
                  end loop;

  end;

结果:

aa
bb
cc
dd
ee
ff
gg
hh
aa
bb
cc
dd
ee
ff
gg
hh

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值