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集合类型的基础功能也是存储字符串列表,和列表类型的区别是字符串不能重复且没有顺序.当然,存储元素唯一性也可以通过应用程序保证,单从这一点上并没有体现出对比列表类型的特点. 其实,集合类型的一 ...
随机推荐
- Codeforces Round #527 (Div. 3) D2. Great Vova Wall (Version 2) 【思维】
传送门:http://codeforces.com/contest/1092/problem/D2 D2. Great Vova Wall (Version 2) time limit per tes ...
- es6之proxy和reflect
一.proxy //Proxy和Reflect //供应商 let obj={ time:"2017-11-21", name:"net", _r:123 } ...
- String.format字符串拼接
一.String.Format1.简介 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象. 2.参数 format()方法有两种重载形式. form ...
- 【题解】洛谷P2704 [NOI2001] 炮兵阵地(状压DP)
洛谷P2704:https://www.luogu.org/problemnew/show/P2704 思路 这道题一开始以为是什么基于状压的高端算法 没想到只是一道加了一行状态判断的状压DP而已 与 ...
- Xdebug 备注
安装步骤: 查看自己的环境是否已安装 Xdebug ,查看方法:使用phpinfo(),搜索 Xdebug 如果没有 如图: 如果没有:下一步确定你的PHP版本信息: Xdebug下载地址 https ...
- CentOS7.5二进制安装MySQL-5.6.40
安装依赖 yum install -y gcc gcc-c++ automake autoconf yum -y install cmake bison-devel ncurses-devel lib ...
- tornado用户指引(四)------tornado协程使用和原理(三)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/happyAnger6/article/details/51291221几种常用的协程方式: 1.回调 ...
- .Net Core使用Redis-从安装到使用
一.安装 本文使用的操作系统是Centos7 在Redis中文网下载最新的Redis压缩包:http://www.redis.cn/ 把包上传到Liunx服务器上,cd 到包所在的目录执行以下命令 # ...
- 06 day小数据池
1.小数据池,id() 小数据池针对的是: int ,str,bool-----都是不可变的数据类型 a.int 类型 a = 1000 b = 1000 print(id(a), id(b)) ...
- TImage保存图片到Stream及从Stream中取图片
因为一个项目,不得不将图片保存到数据库中,需要的时候再从数据库中读取.初时,以为很简单,不就是一个Stream.事实上,也很简单.度娘一下,代码也很多,但,都是坑! 看一下TImage的源,Pictu ...