oracle

推荐列表 站点导航

当前位置:首页 > 数据库 > oracle >

Oracle 数组的学习 小知识也要积累,养成好的学习态度

来源:网络整理  作者:网络  发布时间:2020-12-12 16:51
小知识也要积累,养成好的学习态度 Oracle的数组的学习...
我们通过sample来看看
type t_varray is varray(10) of number; -- varray
end;
这里是Oracle文档里对这三种数组类型的介绍
提叻一个代码段,要人帮助解释一下。
这里是对通过应用性上的对他们三者的概括,好像没有给我们太直接的影响,还是让我们先对其了解,这里的应用性上体现的东西也就好理解叻。
v_array(2) := 'a2';
declare
v_indexby(2):=2;
v_varray:=t_varray(1,2);


type t_indexby is table of number


end loop;
对于nested table来说,下标是序号,是不能为负数的

v_varray:=t_varray(1,2); 2个元素 值为1,2
v_indexby(1):=1;
begin
A nested table is appropriate for large collections that an application stores and retrieves in portions.
type t_nesteed is table of number;
v_nested:=t_nested(1,2,3,4,5);
注意这里的方法,first,返回第一个key,next()返回下一个key
v_array := t_array(); --- 一定要先初始话。
v_indexby(2):=2;
这里,我把它理解为key,而不是元素的序号。所以index by这里的下标,不一定是连续的,可以跳跃,而另两者就不同,另外两个是名符其实的数组对象了,下标表示的就是元素的序号,和java不同,从1开始。
exit when v_idx is null;

3. varray 可变数组
dbms_output.put_line(v_array(v_idx));
v_idx number;
An index-by table is the most flexible and generally best-performing collection type for use inside PL/SQL programs.
index by binary_integer;


一段很简单的有关Oracle里数组的sample代码。看着这段由代表性的代码,不由想起自己以前独自摸索Oracle里数组类型的那种不弄明白决不姑息的激情。
a1
这里分别在v_indexby里加了两个元素,为1, 1和2,2,注意这里的(1),(2)和后面nested table已经varray里的不一样,
v_idx := v_array.next(v_idx);
v_idx := v_array.first;
declare
/
v_array.extend; ---- 扩展数组
type t_array is table of varchar2(1000) index by binary_integer;
v_array(2) := 'a2';
强调一下,对于nested table来说,需要使用extend来扩展数组,添加元素的时候,而varrray不需要(已经知道长度了,定义的时候)。
上两句和后一句有明显的不同,没有定义长度,而varray定义叻长度。varray有长度限制,访问是超过长度的话将提示越界的错误。而indexed by table和nested table显然没有这个限制,不过对于indexed by table和nested table,他们两个也是有区别的。
A VARRAY is appropriate for small collections that the application stores and retrieves in their entirety.
v_array(3) := 'a-1'; ---- v_array(-1) := 'a-1'; 将出错
看看nested tabled的访问也可以和上面一样,当然也可以用更简单的方法来遍历
end;
v_array(1) := 'a1';
v_idx := v_array.next(v_idx);
type t_nesteed is table of number; -- nested table
v_array.extend;
v_varray t_varray;
代码段如下:
v_nested t_nested;
sample code中以对三种不同的type定义的方式开始。
v_array.extend;
2. nested table

复制代码 代码如下:

dbms_output.put_line(v_array(v_idx));
a-1
v_indexby t_indexby;
dbms_output.put(v_idx||' ');
这段代码,收罗叻Oracle里数组的使用方式

复制代码 代码如下:

a2
type t_indexby is table of number index by binary_integer; -- indexed by table
v_idx varchar2(1000);
v_nested:=t_nested(1,2,3,4,5);

v_nested.extend; v_nested(v_nested.count) := 6;

复制代码 代码如下:

上面sample的后部分就描述了两者的区别,对于index by table来说,这里已经指定了index的类型,直接用index的类型的变量做索引来标识着每个元素,而不需要扩展大小。这个功能有些像java里的map(有区别就是这里key是有顺序的),而nested table能则完全和list一样
v_array t_array;
这段代码也还不错,通过简单的实例就把主要的数组类型都罗列出来叻,好的素材 不由又激发其我回答写写的欲望叻,所以也不吝指力,总结叻一番,也顺便填补一下我以前忘记归纳总结的空缺
v_nested:=t_nested(1,2,3,4,5); 5个元素,值为1,2,3,4,5
v_varray:=t_varray(1,2);
v_array(-1) := 'a-1'; -- 是key所以可以为负数
1. index by table
declare
上面的例子里,没有提供,而且我在网上找了很多的介绍都没有详细给出过index by table的遍历的方法的,这里我自己写了一个sample,供大家学习参考
v_idx := v_array.first;
begin
end;

loop
type t_varray is varray(10) of number;
v_indexby(1):=1;
end loop;
这里分别是定义了5个和2个元素的数组。
v_array(1) := 'a1';
begin
loop
exit when v_idx is null;
v_array t_array;
结果

复制代码 代码如下:

type t_array is table of varchar2(1000);
/
大家在这里基本上已经可以看到他们的区别了,index by table在结构上和nested table以及Varray有着本质的不同,那么势必使用的时候肯定不同了。由于index by table下标并不是序号,所以我们只能通过key来访问了,这里和java倒是一样的。

相关热词: oracle

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/sql/oracle/2997.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

Oracle 数组的学习 小知识也要积累,养成好的学习态度

2020-12-12 编辑:网络

我们通过sample来看看
type t_varray is varray(10) of number; -- varray
end;
这里是Oracle文档里对这三种数组类型的介绍
提叻一个代码段,要人帮助解释一下。
这里是对通过应用性上的对他们三者的概括,好像没有给我们太直接的影响,还是让我们先对其了解,这里的应用性上体现的东西也就好理解叻。
v_array(2) := 'a2';
declare
v_indexby(2):=2;
v_varray:=t_varray(1,2);


type t_indexby is table of number


end loop;
对于nested table来说,下标是序号,是不能为负数的

v_varray:=t_varray(1,2); 2个元素 值为1,2
v_indexby(1):=1;
begin
A nested table is appropriate for large collections that an application stores and retrieves in portions.
type t_nesteed is table of number;
v_nested:=t_nested(1,2,3,4,5);
注意这里的方法,first,返回第一个key,next()返回下一个key
v_array := t_array(); --- 一定要先初始话。
v_indexby(2):=2;
这里,我把它理解为key,而不是元素的序号。所以index by这里的下标,不一定是连续的,可以跳跃,而另两者就不同,另外两个是名符其实的数组对象了,下标表示的就是元素的序号,和java不同,从1开始。
exit when v_idx is null;

3. varray 可变数组
dbms_output.put_line(v_array(v_idx));
v_idx number;
An index-by table is the most flexible and generally best-performing collection type for use inside PL/SQL programs.
index by binary_integer;


一段很简单的有关Oracle里数组的sample代码。看着这段由代表性的代码,不由想起自己以前独自摸索Oracle里数组类型的那种不弄明白决不姑息的激情。
a1
这里分别在v_indexby里加了两个元素,为1, 1和2,2,注意这里的(1),(2)和后面nested table已经varray里的不一样,
v_idx := v_array.next(v_idx);
v_idx := v_array.first;
declare
/
v_array.extend; ---- 扩展数组
type t_array is table of varchar2(1000) index by binary_integer;
v_array(2) := 'a2';
强调一下,对于nested table来说,需要使用extend来扩展数组,添加元素的时候,而varrray不需要(已经知道长度了,定义的时候)。
上两句和后一句有明显的不同,没有定义长度,而varray定义叻长度。varray有长度限制,访问是超过长度的话将提示越界的错误。而indexed by table和nested table显然没有这个限制,不过对于indexed by table和nested table,他们两个也是有区别的。
A VARRAY is appropriate for small collections that the application stores and retrieves in their entirety.
v_array(3) := 'a-1'; ---- v_array(-1) := 'a-1'; 将出错
看看nested tabled的访问也可以和上面一样,当然也可以用更简单的方法来遍历
end;
v_array(1) := 'a1';
v_idx := v_array.next(v_idx);
type t_nesteed is table of number; -- nested table
v_array.extend;
v_varray t_varray;
代码段如下:
v_nested t_nested;
sample code中以对三种不同的type定义的方式开始。
v_array.extend;
2. nested table

复制代码 代码如下:

dbms_output.put_line(v_array(v_idx));
a-1
v_indexby t_indexby;
dbms_output.put(v_idx||' ');
这段代码,收罗叻Oracle里数组的使用方式

复制代码 代码如下:

a2
type t_indexby is table of number index by binary_integer; -- indexed by table
v_idx varchar2(1000);
v_nested:=t_nested(1,2,3,4,5);

v_nested.extend; v_nested(v_nested.count) := 6;

复制代码 代码如下:

上面sample的后部分就描述了两者的区别,对于index by table来说,这里已经指定了index的类型,直接用index的类型的变量做索引来标识着每个元素,而不需要扩展大小。这个功能有些像java里的map(有区别就是这里key是有顺序的),而nested table能则完全和list一样
v_array t_array;
这段代码也还不错,通过简单的实例就把主要的数组类型都罗列出来叻,好的素材 不由又激发其我回答写写的欲望叻,所以也不吝指力,总结叻一番,也顺便填补一下我以前忘记归纳总结的空缺
v_nested:=t_nested(1,2,3,4,5); 5个元素,值为1,2,3,4,5
v_varray:=t_varray(1,2);
v_array(-1) := 'a-1'; -- 是key所以可以为负数
1. index by table
declare
上面的例子里,没有提供,而且我在网上找了很多的介绍都没有详细给出过index by table的遍历的方法的,这里我自己写了一个sample,供大家学习参考
v_idx := v_array.first;
begin
end;

loop
type t_varray is varray(10) of number;
v_indexby(1):=1;
end loop;
这里分别是定义了5个和2个元素的数组。
v_array(1) := 'a1';
begin
loop
exit when v_idx is null;
v_array t_array;
结果

复制代码 代码如下:

type t_array is table of varchar2(1000);
/
大家在这里基本上已经可以看到他们的区别了,index by table在结构上和nested table以及Varray有着本质的不同,那么势必使用的时候肯定不同了。由于index by table下标并不是序号,所以我们只能通过key来访问了,这里和java倒是一样的。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/sql/oracle/2997.shtml

相关文章

风云图片

推荐阅读

返回oracle频道首页