1123-01 更新 oracle复合数据类型
参考:
浅谈oracle复合数据类型 http://wenku.baidu.com/view/79b6e13510661ed9ad51f399.html
oracle复合数据类型基础知识
http://wenku.baidu.com/view/95a0722bba1aa8114431d998.html?from=search
Oracle复合类型之RECORD http://wenku.baidu.com/view/d3540427482fb4daa58d4b17.html?from=search
ORACLE中游标和复合数据类型
http://wenku.baidu.com/view/16312c154431b90d6c85c735.html?from=search
oracle三种数组 http://wenku.baidu.com/view/b438aa4dcf84b9d528ea7a23.html?from=search
记录 ,3种 集合(数组)
记录:单行多列
集合:多行单列
记录的定义:
1.显示定义
2.隐式定义
3.游标定义
记录的赋值:
1.赋值语句 select into
2.赋值符 :=
3.游标提取语句 fetch into
记录 的应用:游标的提取
3种集合
1.PL/SQL表(index_by表,索引表)
2.netsted_table(嵌套表)
3.varray|varying array 变长数组
1.数据稀疏性(sparsity):元素下标是否间隔
2.数据绑定:元素数量限制
3.数据库存储能力:能否存储在DB中;元素数据类型
集合的初始化
1.index_by表
无需初始化,定义后可以直接赋值
2.nested_table,varray
使用 构造函数 进行初始化
集合的赋值:
1.赋值语句 select into
2.赋值符 :=
3.游标的提取:逐行提取
fetch <cursor> into <一维数组>
4.游标的提取:一次性提取全部
fetch <cursor> bulk collect into <二维数组>
当<cursor>返回 单行记录 时,也可以用于 <一维数组>。
说明:oracle中没有 一维数组,二维数据,但是 oracle的复合数据类型 可以实现相同的功能。
一维数组:记录(元素为标量数据类型),集合( 元素为标量数据类型 )
二维数组: 记录(元素为复合数据类型),集合( 元素为复合数据类型 )
集合的扩展:
1.index_by表:元素个数没有限制,limit()为null,无需extend,赋值即可扩展元素个数。
2.nested_table表:默认个数即 构造函数 参数个数,;下标默认连续且从1开始;溢出的下标 需要先扩展,再赋值。
3.varray|varying array变长数组: 个数在定义时由max_size指定;下标默认连续且从1开始;溢出的下标 需要先扩展,再赋值。
元素的数据类型:
1.index_by
标量
任何合法的PL/SQL类型
2.nested_table
标量
记录,集合
3.varray
标量
记录(标量)
集合的函数/方法(面向对象的叫法):
1.构造函数
类型名([元素列表])
2.内建函数
长度
扩展元素,删除元素
元素是否存在
首个,末个元素
嵌套表的应用:游标的 bulk collect
3种集合的内建函数:
非法内建函数:
1.index_by表:
exist()
extend()
extend(x)
extend(x,n)
理解:index_by表赋值即可扩展,所以extend方法非法。
2.nested_table表
exist()
3.varray|varying array:
exist()
delete(idx)
delete(idx1,idx2)