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

Posted

篇首语:在劳力上劳心,是一切发明之母。事事在劳力上劳心,变可得事物之真理。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle 数组的学习 小知识也要积累,养成好的学习态度相关的知识,希望对你有一定的参考价值。

Oracle 数组的学习 小知识也要积累,养成好的学习态度  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

提叻一个代码段 要人帮助解释一下 代码段如下

  复制代码 代码如下:

  declare type t_indexby is table of number index by binary_integer; type t_nesteed is table of number; type t_varray is varray( ) of number; v_indexby t_indexby; v_nested t_nested; v_varray t_varray; begin v_indexby( ):= ; v_indexby( ):= ; v_nested:=t_nested( ); v_varray:=t_varray( ); end;

一段很简单的有关Oracle里数组的sample代码 看着这段由代表性的代码 不由想起自己以前独自摸索Oracle里数组类型的那种不弄明白决不姑息的激情 这段代码也还不错 通过简单的实例就把主要的数组类型都罗列出来叻 好的素材 不由又激发其我回答写写的欲望叻 所以也不吝指力 总结叻一番 也顺便填补一下我以前忘记归纳总结的空缺 这段代码 收罗叻Oracle里数组的使用方式 index by table nested table varray 可变数组 这里是Oracle文档里对这三种数组类型的介绍 An index by table is the most flexible and generally best performing collection type for use inside PL/SQL programs A nested table is appropriate for large collections that an application stores and retrieves in portions A VARRAY is appropriate for small collections that the application stores and retrieves in their entirety 这里是对通过应用性上的对他们三者的概括 好像没有给我们太直接的影响 还是让我们先对其了解 这里的应用性上体现的东西也就好理解叻 sample code中以对三种不同的type定义的方式开始 type t_indexby is table of number index by binary_integer; indexed by table type t_nesteed is table of number; nested table type t_varray is varray( ) of number; varray 上两句和后一句有明显的不同 没有定义长度 而varray定义叻长度 varray有长度限制 访问是超过长度的话将提示越界的错误 而indexed by table和nested table显然没有这个限制 不过对于indexed by table和nested table 他们两个也是有区别的 上面sample的后部分就描述了两者的区别 对于index by table来说 这里已经指定了index的类型 直接用index的类型的变量做索引来标识著每个元素 而不需要扩展大小 这个功能有些像java里的map(有区别就是这里key是有顺序的) 而nested table能则完全和list一样 我们通过sample来看看 v_indexby( ):= ; v_indexby( ):= ; 这里分别在v_indexby里加了两个元素 为 和 注意这里的( ) ( )和后面nested table已经varray里的不一样 这里 我把它理解为key 而不是元素的序号 所以index by这里的下标 不一定是连续的 可以跳跃 而另两者就不同 另外两个是名符其实的数组对象了 下标表示的就是元素的序号 和java不同 从 开始 v_nested:=t_nested( ); v_varray:=t_varray( ); 这里分别是定义了 个和 个元素的数组 v_nested:=t_nested( ); 个元素 值为 v_varray:=t_varray( ); 个元素 值为 强调一下 对于nested table来说 需要使用extend来扩展数组 添加元素的时候 而varrray不需要(已经知道长度了 定义的时候) v_nested extend; v_nested(unt) := ; 大家在这里基本上已经可以看到他们的区别了 index by table在结构上和nested table以及Varray有着本质的不同 那么势必使用的时候肯定不同了 由于index by table下标并不是序号 所以我们只能通过key来访问了 这里和java倒是一样的 上面的例子里 没有提供 而且我在网上找了很多的介绍都没有详细给出过index by table的遍历的方法的 这里我自己写了一个sample 供大家学习参考

  复制代码 代码如下:

  declare type t_array is table of varchar ( ) index by binary_integer; v_array t_array; v_idx number; begin v_array( ) := a ; v_array( ) := a ; v_array( ) := a ; 是key所以可以为负数 v_idx := v_array first; loop exit when v_idx is null; dbms_output put_line(v_array(v_idx)); v_idx := v_array next(v_idx); end loop; end; /

结果 a a a 注意这里的方法 first 返回第一个key next()返回下一个key 对于nested table来说 下标是序号 是不能为负数的

  复制代码 代码如下:

  declare type t_array is table of varchar ( ); v_array t_array; v_idx varchar ( ); begin v_array := t_array(); 一定要先初始话 v_array extend; 扩展数组 v_array( ) := a ; v_array extend; v_array( ) := a ; v_array extend; v_array( ) := a ; v_array( ) := a ; 将出错 v_idx := v_array first; loop dbms_output put(v_idx|| ); exit when v_idx is null; dbms_output put_line(v_array(v_idx)); v_idx := v_array next(v_idx); end loop; end; /

看看nested tabled的访问也可以和上面一样 当然也可以用更简单的方法来遍历

  复制代码 代码如下:

其实可以看到和java里的list的访问很类似了 这个知识点 很多人都写过sample 内容不是很多 但是小知识也要积累 劝学里 不积跬步 无以至千里 不积小流 无以成江海 学习固然如此 而Oracle的学习更应如此 以前的庸惰 我今天还是还叻 走江湖的 迟早要还的 Oracle对Index by 数组的官方介绍 cha138/Article/program/Oracle/201404/30541

相关参考

知识大全 Oracle存储过程返回数组的方法

Oracle存储过程返回数组的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  oracle存

知识大全 Oracle中构造包含数组的表

Oracle中构造包含数组的表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  面向对象数据库中存

知识大全 谈谈如何实践“引导学生学会学习,养成良好的学习习惯”,举例说明

谈谈如何实践“引导学生学会学习,养成良好的学习习惯”,举例说明良好的习惯必然在有意识的训练中形成,不允许也不可能在无意识中自发的形成,这是好习惯与不良习惯的根本区别。没有人天生就有好的习惯,谁也不是生

知识大全 学校能教会学生如何学习吗

学校能教会学生如何学习吗教会学生学习要从这几方面:1,要让学生每天保证一定的学习时间,养成良好的学习习惯。2,要使学生有好的学习方法,这样子会取得好效果。3,养成好的行为习惯实际是在学习过程中必须具备

知识大全 我是学习外语的学习日语和英语但是我就是不愿意背单词,还有什么好的学习方法吗

我是学习外语的学习日语和英语但是我就是不愿意背单词,还有什么好的学习方法吗疯狂的听各种英语磁带靠谱点的训练方法一段内容听上至少6遍,早晚各连续三遍,这样凭强制记忆也可以积累小部分单词。看电影你会强迫自

知识大全 PHP新手之学习数组声明

PHP新手之学习数组声明  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!数组是在程序设计中为了处理方

知识大全 数学教学中怎样引导学生养成良好

数学教学中怎样引导学生养成良好常言道:习惯成自然,从小养成好习惯,长大将会有好的品行。《小学数学教学大纲》中明确指出:“在小学,使学生学好数学,培养起学习兴趣,养成良好的学习习惯,对于提高全民族的素质

知识大全 学习使用PHP数组

入门教程:学习使用PHP数组  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PHP中共有超过个新

知识大全 全面学习PHP数组初始化原理

全面学习PHP数组初始化原理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!PHP功能的强大运用它的

知识大全 c#学习体会:使用 ref 和 out 传递数组

  c#学习体会:使用ref和out传递数组(downmoon)希望与大家分享与所有的out参数一样在使用数组类型的out参数前必须先为其赋值即必须由接受方为其赋值例如public stat