PL/SQL:集合类型 (定义,分类,使用场景,集合方法)
来源:互联网 发布:婚礼快剪mac用什么软件 编辑:程序博客网 时间:2024/06/16 22:57
COLLECTION
定义:
集合是相同类型元素的组合。数据库中相当于"多行单列", 类似于数组, 使用唯一的下标来标识其中的每个元素
使用场景
- 索引表: 通常第一选择是索引表,因为它不需要初始化或者extend且无个数限制操作,并且是迄今为止最高效的集合类型。
唯一不足的一点是它只能用于PL/SQL而不能直接用于数据库。
如果你需要允许使用负数索引,应该选择索引表; - 嵌套表: 如果你需要使用10g,11g中的那些集合操作,应该选择Nested table;
- 变长数组: 如果需要限制集合元素的个数
1、索引表
TYPE type_name IS TABLE OF element_type INDEX BY index_type;
table_name type_name ;
element_type:集合中的元素的类型。如number、char, 也可以是记录
index_type :只能是整型或者字符串 pls_integer , binary_integer or char
示例表:
例1:
例2:游标 + 集合
注意:
引用不存在的元素会抛出NO_DATA_FOUND异常。例如, DBMS_OUTPUT.PUT_LINE (last_name_tab(11));
2、嵌套表
TYPE type_name IS TABLE OF element_type ;table_name type_name ;
嵌套表和索引表区别:
- 嵌套表没有index by,其下标固定为整型
- 必须使用和其同名的构造器函数对其初始化
- 因为当声明嵌套表时, 其本身被设置为null. 为了引用嵌套表中的单个元素, 必须先使用同名构造器函数对他初始化
- 嵌套表的构造器函数与嵌套表完全同名, 可以带参也可以无参
- 带参: coll_name := coll_name ('firstname', 'lastname');
- 无参: coll_name := coll_name ();
- 循环遍历时,必须持续使用 .extend() 方法分配存储空间
例子:
3、变长数组
定义:
有最大长度限制的嵌套表, 编码上和嵌套表完全相同
语法:
TYPE type_name IS VARRAY(最大值) OF element_type;
varray_name type_name ;
例子:
修改上例,使用变长数组
※ 集合方法 ※
定义:
集合方法是集合对象的内置函数,可以使用"."标记来调用:
exists(n) 索引处的元素是否存在, 返回TRUE|FALSE
count 当前集合中的元素总个数 (count的不是占位符的个数!)
limit 集合元素索引的最大值 (索引表和嵌套表是不限个数的,所以返回null,变长数组返回定义时的最大索引 )
first / last 返回集合第一个/最后一个元素的下标
prior / next 当前元素的前一个 / 后一个元素
extend 增加元素,扩展集合的容量,不能用于索引表
- x.extend 增加一个null元素
- x.extend(n) 增加n个null元素
- x.extend(n,i) 增加n个元素,元素值与第i个元素相同
trim 从尾部删除, 不能用于索引表, 被删元素不保留占位符
- x.trim 删除一个元素
- x.trim(n) 删除n个元素
delete 按索引删除集合元素, 被删元素保留占位符
- delete 删除所有
- delete(n) 删除第n个
- delete(a,b) 删除a--b之间的所有元素
思考:
collection.trim(1) 和 collection.delete(collection.count) 一样吗??
多层集合
元素类型为集合的集合
9i开始,可以创建多层集合,相当于其它语言中的二维数组
语法:
varray_name(外层下标)(内晨下标)
例子:
集合 + 游标 = 标识多行多列数据
注意:
引用不存在的元素会抛出NO_DATA_FOUND异常。例如, DBMS_OUTPUT.PUT_LINE (last_name_tab(11));
阅读全文
0 0
- PL/SQL:集合类型 (定义,分类,使用场景,集合方法)
- PL/SQL集合类型
- pl/sql集合类型
- PL/SQL 集合类型
- PL/SQL每日一题:TABLE()和集合类型定义
- PL/SQL中的集合类型
- PL/SQL常用集合方法
- PL/SQL 集合的方法
- PL/SQL 集合的方法
- PL/SQL集合类型详细讲解
- 索引表+Pl/SQL集合类型
- PL/SQL中的集合类型(Collections in PL/SQL)
- PL/SQL 集合的方法
- 135.Oracle数据库SQL开发之 集合——使用集合类型定义表列
- PL/SQL集合
- pl/sql中的集合
- PL/SQL集合
- pl/sql 函数集合
- jQuery怎么获取<c:forEach>标签的值
- 加密芯片——RSA算法特点与应用注意事项
- SO_REUSEADDR用法
- 什么是云计算
- Qt源码学习之路(2) QCoreApplication(1)
- PL/SQL:集合类型 (定义,分类,使用场景,集合方法)
- 服务器端部署IIS8.5和asp.net MVC5.0发布网站遇到的一些问题
- 3D Touch小坑
- java之jdbc入门笔记2
- 如何使用webpack在vue项目中写jsx语法
- HDU 6092 Rikka with Subset (背包 思维)
- JavaScript日期格式化方法
- 【剑指offer】面试题67:把字符串转换成整数
- flashvars介绍
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
山师大自考
山师大西苑宾馆
山师大在职研究生招生
山师大文管
山师大附中
福州旗山师大
山师大附近的宾馆
山师大继续教育学院
福州仓山师大宾馆
山师大外国语学院需多少分数
山师大附中地址
山东师范大学分数线
山东师范大学招生网
呼啸山庄人物关系
江阴桃园山庄大酒店
南京紫金山庄会议中心
山形健
山形瑞秋
山形
山形县
日本山形县
留学日本山形大学
山形大学入学条件
寻龙点穴如何看山形
山德士
山德士制药有限公司
骨加果念什么
一个骨一个果念什么
山慈菇
山慈菇价格
山慈菇图片
山慈菇的功效与作用
山偏旁的字有哪些
描写山的词语有哪些
山的成语
形容山的成语
山开头成语
什么山什么什么成语
山什么成语
山什么什么成语
山开头的成语