Oracle中的集合

1.INDEX-BY 表

类似于C语言中的数组,声明:

TYPE tabletypeIS TABLE OF type INDEX BY BINARU_INTEGER;

其中:

         tabletype是指所定义的新类型的类型名

         type是要定义的index-by表的类型

元素赋值:

         BEGIN

         v_Name(1):='China';

         v_Name(2):='USA';

         v_Name(-2):='Italy'; --这里的和C语言的数组不同,既没有顺序,下标也可以为负值。

         END;

实例:

         DECLARE

         TYPE StudyTab IS TABLE OF VARCHAR2(20)INDEX BY BINARY_INTEGER;

         v_StudyTab StudyTab;

         BEGIN

         FOR v_Count IN 1..5 LOOP

                   v_StudyTab(v_Count):=v_Count*100;

         END LOOP;

         FOR v_Count IN 1..6 LOOP

         DBMS_OUTPUT.PUT_LINE(v_StudyTab(v_Count));

         END LOOP;

         END;

调用不存在的元素,会报错。

 

2. 嵌套表

         a.初始化:

         在声明了嵌套表之后,如果嵌套表里没有任何元素,那么它会自动初始化为NULL,并且是只读的。因此需要进行初始化,在初始化时存于需要的数据。

         DECLARE

         TYPEStudyTab IS TABLE OF VARCHAR2(20);

         v_StudyTabStudyTab:=StudyTab('Tom','Jack','Rose');

         BEGIN

         FORv_Count IN 1..3 LOOP

                   DBMS_OUTPUT.PUT_LINE(v_StudyTab(v_Count));

         ENDLOOP;

         END;

 

b. 元素序列

嵌套表在结构上是有序的,如果对一个嵌套表赋值,那么嵌套表元素的index将会从1开始依次递增。

DECLARE

TYPE NumTab IS TABLE OF NUMBER(4);

v_NumNumTab:=NumTab(1,2,3,4,5,6,7);

BEGIN

FOR v_Count IN1..7 LOOP

         DBMS_OUTPUT.PUT_LINE('v_Num('||v_Count||')='||v_Num(v_Count));

END LOOP;

END;

 

3. 可变数组

         可变数组声明如下:

         TYPE type_name IS {VARRAY|VARYING ARRAY}(maximum_size) OF element_type [NOT Null];

         其中:

         type_name是可变数组的类型名

         maximum_size是指可变数组元组的个数的最大值

         element_type是指数组元素的类型

         例子: 

	DECLARE
	TYPE Dates IS VARRAY(7) OF VARCHAR2(10);
	v_Dates Dates:=Dates('Monday','Tuesday','Wesdnesday');
	BEGIN
	FOR v_Count in 1..3 LOOP
		DBMS_OUTPUT.PUT_LINE(v_Dates(v_Count));
	END LOOP;
	END;


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值