PLSQL集合类型
PLSQL集合类型
--联合数组(索引表)
/*
用于存储某个数据类型的数据集合类型 。通过索引获得联合数组中得值
如下例子:
*/
DECLARE
CURSOR cur_chars IS SELECT chars FROM a;--声明游标
TYPE str_type IS TABLE OF a.chars%TYPE--声明联合数组
INDEX BY BINARY_INTEGER; --声明联合数组的索引
strs str_type;--声明str_type 的联合数组strs
counts INTEGER := 0;
BEGIN
FOR cur_chars_rec IN cur_chars LOOP
counts := counts + 1;
strs(counts) := cur_chars_rec.chars;
dbms_output.put_line('counts('||counts||'):'||strs(counts));
END LOOP;
END;
这个联合索引类型其实就是表数据的索引,定义游标然后把遍历到的结果存放在联合数组中,就相当于程序的基本数据类型数组
1.声明游标用来遍历表数据2.声明联合数组用来存储游标遍历的数据集3.声明索引
4.定义联合数组 联合数组名称 联合数组type
strs(counts) := cur_chars_rec.chars; 联合数组赋值命令
--嵌套表
/*
plsql表类型之一,他与联合数组具有相同的结构,都是使用下标访问数组
主要区别在于,嵌套表可以存储在数据库表的列中,而联合数组不行
*/
DECLARE
CURSOR my_cursor IS SELECT chars FROM a WHERE NUM='ww' ;--定义游标
TYPE table_type IS TABLE OF a.chars%TYPE;--声明表类型
table_name table_type:=table_type();--定义并初始化嵌套表
counts INTEGER := 1;
BEGIN
FOR my_cursor_rec IN my_cursor LOOP
counts := counts;
table_name.extend;--表做成可扩展的***
table_name(counts):=my_cursor_rec.chars;
dbms_output.put_line('counts'||counts||' := '||table_name(counts));
END LOOP;
END;
--创建变长数组
DECLARE
TYPE varray_type IS ARRAY(10) OF NUMBER(6);
varray_name varray_type := varray_type(); --变长数组同嵌套表相同都需要初始化收集
counts INTEGER := 0;
BEGIN
FOR i IN 1..5 LOOP
counts := counts + 1;
varray_name.extend;
varray_name(counts) := i;--这个都是相同的使用下标
dbms_output.put_line('counts('||counts||'):='||i);
END LOOP;
END;
varray_name.extend; 的使用超过范围的时候需要使用扩展
集合函数的使用count 数量 first 第一个 last 最后一个
Varrary_array.count Varrary_array.first Varrary_array.last
Varrary_array.trim(4) 从后往前删除4个数组元素
多层集合 集合作为集合的元素
变长数组为例 就相当于数据的嵌套
--多层集合(数组的嵌套)
DECLARE
TYPE var_type1 IS VARRAY(5) OF INTEGER;--声明变长数组
TYPE var_type2 IS VARRAY(3) OF var_type1;--声明多层集合,集合元素类型为var_type1
varray_integer var_type1 := var_type1(1,2,3,4,5);--集合给初始值
varray_multi var_type2 := var_type2(varray_integer);
BEGIN
FOR i IN 1..5 LOOP
dbms_output.put_line('varray_integer('||i||'):='||varray_integer(i));
END LOOP;
varray_multi.extend;
varray_multi(2) := var_type1(6,7,8,9,10);
varray_multi.extend;
varray_multi(3) := var_type1(5,4,3,2,1);
FOR i IN 1..3 LOOP
FOR j IN 1..5 LOOP
dbms_output.put_line('varray_multi['||i||']'||'['||j||']=='||varray_multi(i)(j));
END LOOP;
END LOOP;
END;
--集合的方法
DELETE --删除集合元素
EXTEND --为集合增加元素空间,实现空间的扩展以填充新元素。
COUNT --集合元素中的数量
EXISTS --如果指定的元素在集合中存在,则返回true
DELETE --删除指定集合位置的元素
FIRST AND LAST --集合中的第一个和最后一个元素
PRIOR AND NEXT --返回集合指定位置的前一个和后一个元素
TRIM --从集合尾部删除元素
LIMIT --返回集合允许元素的最大数量
PLSQL集合类型的更多相关文章
- PLSQL集合类型的使用总结
PLSQL集合类型的使用总结 在pl sql 中,集合(collection) 是一组有序的元素组成的对象,这些元素的类型必须一致. pl sql 将collection 分成3 类,分别为Assoc ...
- JAVA集合类型详解
一.前言 作为java面试的常客[集合类型]是永恒的话题:在开发中,主要了解具体的使用,没有太多的去关注具体的理论说明,掌握那几种常用的集合类型貌似也就够使用了:导致这一些集合类型的理论有可能经常的忘 ...
- C#集合类型大盘点
C#集体类型( Collections in C#) 集合是.NET FCL(Framework Class Library)中很重要的一部分,也是我们开发当中最常用到的功能之一,几乎是无处不在.俗话 ...
- Python学习笔记——集合类型
集合类型有两种不同的类型——可变集合(set)和不可变集合(frozenset) 可变集合不是可哈希的,不能用作字典的键,也不能用做其他集合中的元素 不可变集合是有哈希值的,能被用做字典的键或者是作为 ...
- Spring中集合类型属性注入
我们都知道如何去注入普通属性的值,非常简单,那么我们如何去注入开发中常见的集合类型的属性了,别急,往下看. 这里将介绍如何给Map list set Array Properties 这些属性注入值. ...
- Redis常用命令入门5:有序集合类型
有序集合类型 上节我们一起学习了集合类型,感受到了redis的强大.现在我们接着学Redis的最后一个类型——有序集合类型. 有序集合类型,大家从名字上应该就可以知道,实际上就是在集合类型上加了个有序 ...
- Redis常用命令入门4:集合类型
集合类型 之前我们已经介绍过了最基本的字符串类型.散列类型.列表类型,下面我们一起学习一下集合类型. 集合类型也是体现redis一个比较高价值的一个类型了.因为Redis的集合类型,所以我们可以很容易 ...
- Redis从基础命令到实战之有序集合类型(SortedSet)
有序集合类型是Redis五种数据类型中最高级的.也是最复杂的类型.有序集合具有集合类型的特性,在其基础上给每个元素关联了一个分值,或称为权重,操作时既可以在添加元素时指定分值,也可以单独修改集合中某一 ...
- Redis从基础命令到实战之集合类型(Set)
Redis集合类型的基础功能也是存储字符串列表,和列表类型的区别是字符串不能重复且没有顺序.当然,存储元素唯一性也可以通过应用程序保证,单从这一点上并没有体现出对比列表类型的特点. 其实,集合类型的一 ...
随机推荐
- PHP------XML
XML XML的含义:可扩展标记语言,设计出来的目的是:传输数据 HTML的含义:超文本标记语言,设计出来的目的是:显示数据 它们两个设计出来的目的是不一样的. 它们两个都是标记语言,相似性比较高. ...
- Java 内部类综述
转载自:https://blog.csdn.net/justloveyou_/article/details/53245561
- HDU 2082 找单词 (普通型 数量有限 母函数)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2082 找单词 Time Limit: 1000/1000 MS (Java/Others) Me ...
- 【Django笔记一】windows系统下搭建Django项目
一.环境版本信息: 操作系统:windows10 Django版本:2.0.5 Python版本:3.6.4 二.创建虚拟环境: 1.为什么要创建虚拟环境: 我们要开发一个新的项目,需要一套独立的Py ...
- Linux面试笔试题带答案【详解】
一.填空题:1. 在Linux系统中,以 ,该文件属性是 目录.8. 前台起动的进程使用 Ctrl+c 终止.9. 静态路由设定后,若网络拓扑结构发生变化,需由系统管理员修改路由的设置.10. 网络管 ...
- 在vue中如何实现购物车checkbox的三级联动
最近用vue写一个电商项目,自然就少不了要写一个购物车的相关页面,功能完整的购物车的checkbox应该是三级联动的,1级checkbox是选中购物车中所有的商品,2级checkbox是选中某个店铺下 ...
- WSO2 API Manager中host Ip 不正确的问题解决方法
问题: 根据官方的Quick start的教程,部署完AM后,添加的API的host Ip不正确,为localhost或者服务器上的其他虚拟ip. 安装版本: WSO2AM 2.6.0 环 ...
- border-radius__边框圆角
1.四个参数: border-radius: 值1 值2 值3 值4;顺序:从左开始,顺时针顺 div{ width: 200px; height: 100px; background-color: ...
- Java : Spring基础 IOC
使用 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml" ...
- windows下nginx的安装
一. 下载 http://nginx.org/ (下载后解压) 二. 修改配置文件 nginx配置文件在 nginx-1.8.0\conf\nginx.conf http { gzip on; ...