oracle 集合 index table

原创 2015年07月10日 00:47:44

1、type index_table_type is table of element_type [not null] index by binary_integer | pls_integer | varchar2

      not null 指定集合对象元素值不允许为空

      index_table 只允许在plsql中使用,下标可以为负数,元素个数没限制

2、 使用例子

--binary_integer | pls_integer
Declare
  Type index_table_type Is Table Of Varchar2(10) Not Null Index By Pls_Integer;
  index_table_obj index_table_type;
  strCur   Varchar2(3);
Begin
  index_table_obj(-1):='北京';
  index_table_obj(0):='上海';
  index_table_obj(1):='广州';
  
  If index_table_obj.count>0  Then 
     dbms_output.put_line('--从第一个元素开始输出');
     strCur:=index_table_obj.first();
     Loop
     dbms_output.put_line(index_table_obj(strCur));
     Exit When strCur=index_table_obj.last();
     strCur:=index_table_obj.next(strCur);
     End Loop;
     
     dbms_output.put_line('--从最后一个元素开始输出');
     strCur:=index_table_obj.last();
     Loop
     dbms_output.put_line(index_table_obj(strCur));
     Exit When strCur=index_table_obj.first();
     strCur:=index_table_obj.prior(strCur);
     End Loop;
  End If;
End;

输出:

--从第一个元素开始输出
北京
上海
广州
--从最后一个元素开始输出
广州
上海
北京


--varchar2
Declare
  Type index_table_type Is Table Of Varchar2(20) Not Null Index By Varchar2(3);
  index_table_obj index_table_type;
  strCur Varchar2(3);
Begin
  index_table_obj('zj'):='浙江';
  index_table_obj('bj'):='北京';
  index_table_obj('sh'):='上海'; 
  
  If index_table_obj.Count>0 Then 
     dbms_output.put_line('--从第一个元素开始输出');
     strCur:=index_table_obj.First();
     Loop
       dbms_output.put_line('下标:'|| strCur||'  值:'||index_table_obj(strCur));
       Exit When strCur=index_table_obj.Last;
       strCur:=index_table_obj.Next(strCur);
     End Loop;
     
     dbms_output.put_line('--从最后一个元素开始输出');
     strCur:=index_table_obj.Last();
     Loop
       dbms_output.put_line('下标:'|| strCur||'  值:'||index_table_obj(strCur));
       Exit When strCur=index_table_obj.First;
       strCur:=index_table_obj.Prior(strCur);
     End Loop;
  End If;
End;

输出:

--从第一个元素开始输出
下标:bj  值:北京
下标:sh  值:上海
下标:zj  值:浙江
--从最后一个元素开始输出
下标:zj  值:浙江
下标:sh  值:上海
下标:bj  值:北京

3、函数说明

    1、Count:返回集合对象元素个数

    2、First():返回集合对象第一个元素的下标

    3、Prior():返回集合对象指定元素的前一个元素的下标

    4、Next():返回集合对象指定元素的后一个元素的下标

    5、Last():返回集合对象最后一个元素的下标


oracle TABLE ACCESS BY INDEX ROWID 你不知道的索引回表-开发系列(三)

TABLE ACCESS BY INDEX ROWID 你不知道的索引回表带来的低效率
  • xiaohai798
  • xiaohai798
  • 2014年11月11日 14:39
  • 10109

rename 表操作后index是否依然可用

今天群里有人问起rename 表操作对index的影响。今天简单说一下: 首先ORACLE官方文档对RENAME操作的说明如下:   Use the RENAME statement to renam...
  • woqiang68
  • woqiang68
  • 2014年01月29日 20:16
  • 2133

Oracle集合的初始化与赋值

对于集合类型,与单一的数据类型相比较而言,应该以一个整体的观念来考虑集合,即是一批类型相同的数据组合而非单一的数据。因此集 合类型集合的声明、赋值、初始化较之单一类型而言,有很大的不同。尤其是嵌套表...
  • futdktyx
  • futdktyx
  • 2014年04月16日 18:54
  • 3904

Lua查找表元素过程(元表、__index方法是如何工作的)

近日开始研究Lua,在元表的使用上照猫画虎地搞了两下,实现了“面向对象”,但究其本质却略有不解,后咨询牛哥得解,特此记录。 Lua的表本质其实是个类似HashMap的东西,其元素是很多的Key-V...
  • xocoder
  • xocoder
  • 2013年06月05日 11:22
  • 48106

oracle存储过程,集合对象处理

我们在进行pl/sql编程时打交道最多的就是存储过程了。存储过程的结构是非常的简单的,我们在这里除了学习存储过程的基本结构外,还会学习编写存储过程时相关的一些实用的知识。如:游标的处理,异常的处理,集...
  • u013310119
  • u013310119
  • 2016年05月13日 16:36
  • 2103

Oracle-index索引解读

概述Oracle-OLAP和OLTP解读Oracle-index索引解读Oracle-分区表解读Oracle-锁解读Oracle-等待事件解读Oracle-procedure/cursor解读 索引是...
  • yangshangwei
  • yangshangwei
  • 2016年10月27日 21:25
  • 3509

Oracle集合操作

在Oracle中提供了三种类型的集合操作: 并(UNION)、交(INTERSECT)、差(MINUS) UNION:将多个查询的结果组合到一个查询结果之中,并去掉重复值 UNION ALL:将多...
  • magi1201
  • magi1201
  • 2015年08月09日 11:24
  • 2187

Oracle中集合的使用

集合 两个表通常使用外键建立数据之间的关联,相对于这样的方式访问数据库,存储在集合中的数据可以更快的被访问。常用的集合类型: index-by表 嵌套表 可变数组 index-by表 in...
  • dzy21
  • dzy21
  • 2016年07月28日 11:31
  • 2092

索引扫描还是全表扫描(Index Scan Or Full Table Scan)

作者:Sky.Jian | 可以任意转载, 但转载时务必以超链接形式标明文章原始出处 和 作者信息 及 版权声明  链接:http://isky000.com/database/index_sc...
  • xpzhang123
  • xpzhang123
  • 2015年12月04日 11:26
  • 1042

数据库系统概念中table/view/schema/index的关系

操作对象 创建 删除 修改 模式 CREATE SCHEMA DROP SCHEMA 表 CREATE TABLE DROP TABLE ALTER TAB...
  • u013007900
  • u013007900
  • 2016年03月23日 17:30
  • 2528
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle 集合 index table
举报原因:
原因补充:

(最多只允许输入30个字)