集合类型要用IS TABLE OF来定义,表示是一个集合。

转载 2016年08月30日 09:40:17

在PL/SQL代码块中使用select into 赋值的话,有可能返回的是一个结果集。此时,如果使用基本类型或自定义的记录类型,将会报错。

因此,需要定义一个变量,是某种类型的集合。下面以一个基于表的行类型的集合为例简单介绍一下(相信基本类型同理吧)。

复制代码
 1 DECLARE
 2    CURSOR cur_tx IS  SELECT GKEY from t ;
 3     SUBTYPE  TX_TYPE IS t%ROWTYPE ; -- 定义类型
 4     TYPE TX_TAB IS TABLE OF TX_TYPE;--定义新类型,是某个类型的集合
 5     K t.GKEY%TYPE;
 6     V_Tx TX_TAB:=TX_TAB();--使用时应实例化,否则报错
 7 BEGIN
 8    OPEN CUR_TX;
 9    FETCH CUR_TX INTO K;
10     SELECT * BULK COLLECT INTO V_Tx FROM t WHERE gkey=K; --返回结果集
11    FORALL x in V_Tx.first .. V_Tx.last--遍历操作
12           -- statement;      
13    CLOSE CUR_TX;
14 END;  
复制代码

集合类型要用IS TABLE OF来定义,表示是一个集合。

/*在使用时,一定要实例化,否则报错:local collection types not allowed in SQL statements. 还表示collection type应该是schema级的才能使用。*/

(注:经检查,与实例化无关,与select into时要使用bulk collect 有关)

当然也可以使用游标,将结果集放在游标中。这里只是提供另一种思路。

这里提到了BULK COLLECT和FORALL 批量绑定检索。

FORALL与BULK COLLECT的使用方法: 
1.使用FORALL比FOR效率高,因为前者只切换一次上下文,而后者将是在循环次数一样多个上下文间切换。 

2.使用BLUK COLLECT一次取出一个数据集合,比用游标条取数据效率高,尤其是在网络不大好的情况下。但BLUK COLLECT需要大量内存,因此最好确保每次取出的记录不会很多。 

Oracle中IS TABLE OF的使用

IS TABLE OF :指定是一个集合的表的数组类型, 简单的来说就是一个可以存储一列多行的数据类型。 INDEX BY BINARY_INTEGER:指索引组织类型 BULK COLLECT :指...
  • pan_junbiao
  • pan_junbiao
  • 2017年04月23日 18:33
  • 3750

oracle常用的复合数据类型 : BULK COLLECT(成批聚合类型)和数组集合type类型is table of 表%rowtype index by binary_integer

例1:批量 查询部门号为"10" 号的并把它们打印出来.DECLARE   TYPE emp_table_type IS TABLE OF my_emp%ROWTYPE INDEX BY BINARY...
  • oypj2010
  • oypj2010
  • 2011年05月25日 17:45
  • 8839

oracle bulk collect is table of 批量操作

例1: 批量 查询部门号为 "10"  号的并把它们打印出来 . DECLARE    TYPE emp_table_type IS TABLE OF my_emp%ROWTYPE IND...
  • al_jin
  • al_jin
  • 2015年06月12日 17:00
  • 567

实战BULK COLLECT(成批聚合类型)和数组集合type类型is table of 表%rowtype index by binary_integer .

转载 http://blog.csdn.net/zcywell/article/details/7258049 例1: 批量 查询部门号为 "10"  号的并把它们打印出来 . DECLARE ...
  • ruihua1021
  • ruihua1021
  • 2015年04月13日 10:29
  • 533

学习TYPE IS TABLE OF VARCHAR2 INDEX BY VARCHAR

今天一朋友发给我一个存储过程,里面有我一些不懂的东西,现记录如下: TYPE IS TABLE OF VARCHAR2 INDEX BY VARCHAR 有这么一段不明白什么意思,自己做了一个测试: ...
  • haofeifei111
  • haofeifei111
  • 2014年03月12日 10:07
  • 4456

ORACLE中RECORD、VARRAY、TABLE的使用详解

ORACLE中RECORD、VARRAY、TABLE的使用详解
  • liangweiwei130
  • liangweiwei130
  • 2014年07月28日 08:22
  • 42634

PL/SQL 记录集合IS TABLE OF的使用

在PL/SQL代码块中使用select into 赋值的话,有可能返回的是一个结果集。此时,如果使用基本类型或自定义的记录类型,将会报错。 因此,需要定义一个变量,是某种类型的集合。下面以一个基于表...
  • linkunhao123
  • linkunhao123
  • 2015年12月21日 19:23
  • 163

集合类型要用IS TABLE OF来定义,表示是一个集合。

在PL/SQL代码块中使用select into 赋值的话,有可能返回的是一个结果集。此时,如果使用基本类型或自定义的记录类型,将会报错。 因此,需要定义一个变量,是某种类型的集合。下面以一个基...
  • GDUT_xiaoshen
  • GDUT_xiaoshen
  • 2016年08月30日 09:40
  • 794

自定义table

①在自定义tableView.h文件中,添加属性   ②在tableview.m的interface中声明代理 ③在.m中的initWithFrame方法内部设置table的代理以及添加tableV...
  • xiaolaidute
  • xiaolaidute
  • 2015年06月30日 11:38
  • 74

Oracle集合类型

所谓集合是一种类似于列表或者一维数组的数据结构。PL/SQL提供了三种集合类型:关联数据组(索引表),嵌套表和VARRAY(可变长数组)。 1.关联数组(索引表) 关联数组(也称为索引表)是一组键值对...
  • chiclewu
  • chiclewu
  • 2013年12月12日 14:26
  • 3671
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:集合类型要用IS TABLE OF来定义,表示是一个集合。
举报原因:
原因补充:

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