数据集合 oracle,oracle集合
oracle集合
1初识集合
集合是oracle中的一种数据类型 存放一组数据类型相同的数据
集合组成
由下标和值组成
下标的类型包含数字(整数,pls_integer,binary_integer)和字符串
值的类型可以是数据库中的所有类型(基本数据类型,记录类型(record,%rowtype),%type,集合类型)
集合三种类型
索引表可以通过数字或字符串作为下标来查找其中的元素,仅在pl/sql中使用
嵌套表拥有索引表的所有特性,但是下标只能是数字类型(连续的整数)
可以在plsql中使用也可以在数据库中使用
变长数组下标只能是数字类型,创建时需要指定最大长度
可以在plsql中使用也可以在数据库中使用
2索引表类型
2.1语法
定义一个索引表类型
type 类型名称 is table of 元素值的数据类型 index by 下标的数据类型;
索引变量的声明
变量名 类型名;
索引变量的使用
变量名(下标);
2.2简单使用declare
--定义一个索引表类型
type itype is table of varchar2(30) index by pls_integer;
--声明一个集合变量
ind itype;
begin
ind(1):='张三';
ind(4):='李四';
dbms_output.put_line(ind(4)||','||ind(1));
end;
输出李四,张三
3集合的属性或方法
3.1属性或方法简单汇总first取集合第一个元素的下标
last取集合元素最后一个元素的下标
next(下标)取集合当前下标的下一个元素的下标
prior(下标)取集合当前下标的上一个元素的下标
count取集合中元素的个数
delete删除集合中的元素
limit取集合最大的元素的个数(变长数组)
3.2属性或方法示例declare
--定义一个集合类型
type itype is table of varchar2(30) index by varchar2(30);
--声明一个索引表
eng itype;
begin
--给索引表赋值
eng('a'):='张三';
eng('b'):='李四';
eng('c'):='王五';
eng('d'):='赵六';
--打印集合中第一个元素的下标
dbms_output.put_line('第一个元素的下标: '||eng.first);
--打印集合中最后一个一个元素的下标
dbms_output.put_line('最后一个元素的下标: '||eng.last);
--打印集合中第二个元素的下标
dbms_output.put_line('第二个元素的下标: '||eng.next(eng.first));
--打印集合中倒数第二个元素的下标
dbms_output.put_line('倒数第二个元素的下标: '||eng.prior(eng.last));
--打印集合中元素的个数
dbms_output.put_line('元素个数: '||eng.count);
end;
输出第一个元素的下标: a
最后一个元素的下标: d
第二个元素的下标: b
倒数第二个元素的下标: c
元素个数: 4declare
--定义一个集合类型
type itype is table of varchar2(30) index by varchar2(10);
--定义一个变量保存集合的下标
v_ind varchar(10);
--声明一个索引表
eng itype;
begin
--给索引赋值
eng('a'):='张三';
eng('b'):='李四';
eng('c'):='王五';
eng('d'):='赵六';
--遍历打印集合中的元素
--将第一个元素的下标放入变量v_ind中
v_ind:=eng.first;
loop
--打印集合元素
dbms_output.put_line(eng(v_ind));
--判断退出条件,当下标的值等于最后一个下标的值
exit when v_ind=eng.last;
--循环控制语句
v_ind:=eng.next(v_ind);
end loop;
end;
输出:张三
李四
王五
赵六
4bulk collect语句循环遍历
集合提供了bulk collect语句获取表中数据
通过bulk colleck语句存入集合中的元素下标从1开始并且是连续的
4.1语法1
select 列.. bulk collect into 集合变量 from 表 where条件
获取emp表中30部门中的员工号和姓名declare
--定义索引表集合存储emp表中empno和ename
type i_empno is table of emp.empno%type index by pls_integer;
type i_ename is table of emp.ename%type index by pls_integer;
--定义索引变量
eno i_empno;
eme i_ename;
begin
--bull collect语句获取empno和ename
select empno,ename bulk collect into eno,eme from emp where deptno=30;
for i in eno.first..eno.last loop
dbms_output.put_line(eno(i)||eme(i));
end loop;
end;
输出7499ALLEN
7521WARD
7654MARTIN
7698BLAKE
7844TURNER
7900JAMES
4.2语法2
execute immediate 'select语句' bulk collect into 集合变量
获取emp表中30部门中的员工号和姓名declare
--声明一个变量存放selqct查询结果
v_sql varchar2(255);
--定义索引表集合存储emp表中empno和ename
type i_empno is table of emp.empno%type index by pls_integer;
type i_ename is table of emp.ename%type index by pls_integer;
--定义索引变量
eno i_empno;
eme i_ename;
begin
--将sql语句赋值给v_sql
v_sql:='select empno,ename from emp where deptno=30';
--bulk collect语句,将v_sql查询到的结果放到eno和eme中
execute immediate v_sql bulk collect into eno,eme;
--循环打印eno和eme中所有的数据
for i in eno.first..eme.last loop
dbms_output.put_line(eno(i)||eme(i));
end loop;
end;
输出7499ALLEN
7521WARD
7654MARTIN
7698BLAKE
7844TURNER
7900JAMES
4.3语法3
fetch 游标 bulk collect into 集合变量
获取emp表中30部门中的员工号和姓名declare
--声明一个游标
cursor cur is select empno,ename from emp where deptno=30;
--声明集合,存放empno和ename
type i_empno is table of emp.empno%type index by pls_integer;
type i_ename is table of emp.ename%type index by pls_integer;
--声明索引变量
eno i_empno;
eme i_ename;
begin
--打开游标
open cur;
--bulk collect语句,将cur查询到的结果放到eno和eme中
fetch cur bulk collect into eno,eme;
--关闭游标
close cur;
--循环打印出eno和eme集合中的所有数据
for i in eno.first..eno.last loop
dbms_output.put_line(eno(i)||','||eme(i));
end loop;
end;
输出7499,ALLEN
7521,WARD
7654,MARTIN
7698,BLAKE
7844,TURNER
7900,JAMES
数据集合 oracle,oracle集合相关推荐
- Oracle 语言分类 数据类型 数据类型转换 常用函数 集合操作 子查询
SQL分类 SQL(Structure Query Language)语言是数据库的核心语言.SQL语言共分为四大类:数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL.1 ...
- oracle有集合为什么要用游标,oracle 游标使用
游标: 用来查询数据库,获取记录集合(结果集)的指针,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情况,我们所说的游标都是指显式游标. 要在程序中使用游标,必须首先声明游标分类: 1.静 ...
- oracle union all写法,【oracle】-集合运算:UNION,UNION ALL...
在Oracle中提供了三种类型的集合操作: 并(UNION).交(INTERSECT).差(MINUS) UNION:求并,重复记录只显示一次. UNION ALL:求并集,显示所有记录信息. INT ...
- 5.创建表,使用alter进行表信息的增删改,Oracle回收站,集合运算
1 Oracle基于用户的管理方案 2 DDL语句可以管理数据库的对象有:视图 索引 序列 同义词 约束 3 创建一个表,有2个条件(1 有权限:2有表空间) Oracle给你提 ...
- oracle的集合操作符,[Oracle] Oracle的集合操作符
Oracle的集合操作包括: union , intersect , minus. [例子] 假设有两个表a,b如下: SQL> select * from a; COLA ---------- ...
- oracle 数据执行计划,Oracle 常见的执行计划步骤(explain结果的Description数据参考)...
在PL/SQL中 执行explain plain for select ... 查看Description 数据参考: Oracle常见的执行计划步骤 这里我们介绍一些常见的执行计划中的步骤及算法. ...
- sqlldr,将数据批量导入Oracle数据库
哈喽,大家好,今天分享一个如何把文本数据快速导入到Oracle数据库的一个方法. 首先介绍一下sqlldr工具,它是由Oracle提供,专本用于把文本数据导入到Oracle数据库.它需要两个文件,一个 ...
- 数据如何导入oracle数据库,如何用Oracle导入导出工具来实现Oracle数据库移植?
Oracle数据库作为目前市场的主流数据库之一,许多应用都在其上进行开发,由于Oracle数据库更新换代的原因和不同的应用程序提供商,可能会造成在一个单位的应用中存在Oracle的几种版本,如Orac ...
- dataset中的数据批量导入oracle数据库,c#如何将dataset中的数据批量导入oracle数据库...
c#如何将dataset中的数据批量导入oracle数据库以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c#如何将da ...
最新文章
- Ubuntu 调试的时候,不能查看变量值
- Linux /dev目录详解和Linux系统各个目录的作用
- 小程序如何传数组数据到vs后台中
- 工具_HBuilder使用快捷方式
- c mysql ssh_c ssh mysql数据库
- P2548 [AHOI2004]智能探险车
- Linux命令----cat
- JDI考虑让日本国内部分工厂停工 因苹果公司需求低迷
- 以某种结构遍历添加的基础类
- python字典统计排序 统计各省份大学数量_1641统计字典排序元音字符串的数量(递归,递归),数目,递推...
- 设置Session超时的三种方法
- Idea使用SVN下载运行项目
- 【第三方互联】2、创建腾讯QQ互联应用
- 利用计算机进行有理数的运算教学反思,有理数乘法分配律教学反思
- RStudio的安装
- 不占广告位增加网站收入揭秘
- 面渣逆袭:计算机网络六十二问,三万字图文详解
- Dijkstra——去北京看奥运
- Flickr和DasBlog以及地理标记和EXIF等等
- SEO现状:网络营销之SEO骗子多(转)