Oracle学习(十三) 集合

PL/SQL语言的集合类似于数组,是管理多行数据必须的结构体。集合就是列表,可能有序,也可能无

序。PL/SQL的集合类型有:联合数组、嵌套表和可变数组三种。

1、联合数组

联合数组类似于C语言中的数组。

(1)语法格式如下:

type typeName
is table of arrayType index by binary_integer;

其中,typeName表示新类型的类型名,arrowType表示要定义的联合数组的类型。

假设有一个表t_module(name varchar(20)),那么我们可以针对其name字段建立如下联合数组:

type moduleName is table of t_module.name%type index by binary_integer;  

(2)元素赋值

示例代码如下:

declare
    type NameArray
    is table of varchar(20) index by binary_integer; /*定义联合数组NameArrow*/
    na NameArray; /*声明联合数组NameArrow的一个变量*/
begin
    na(1) := 'Hello'; /*给联合数组赋值*/
    na(2) := 'World'; /*给联合数组赋值*/
    na(5) := 'Oracle'; /*给联合数组赋值*/
    dbms_output.put_line(na(1) || na(2));
end;

注意:

a.联合数组中的元素不是按特定顺序排列的,元素的下标也是可以无序的,所以nameArrow(-100) :=

'Hello'也是可以的。

b.index的数据类型是binary_integer类型,所以index的范围为-214483647~+214483647。

c.当调用不存在的元素时将会出错。

2、嵌套表

嵌套表的声明和联合数组的声明十分类似。语法格式如下:

type typeName is table of arrayType [not null]  

嵌套表的声明与联合数组的唯一不同是没有index by binary_integer子句。

(1)嵌套表的初始化

嵌套表的初始化和联合数组的初始化是不同的。在声明了联合数组之后,再声明一个联合数组对应的

变量,如果此时没有给该变量赋值,那么该变量对应的联合数组就是一个空的,在以后的语句中还可以

给该联合数组添加元素;而如果在声明了嵌套表变量时没有初始化,则该嵌套表将自动初始化为null,

并且是只读的。如果在后续代码中继续向该嵌套表中添加元素,就会报错,但是可以修改已经存在的元

素的值。

以下是一个嵌套表的初始化示例:

declare
    type NameArray is table of varchar(20);
    na NameArray := NameArray('ZhangSan', 'LiSi', 'WangWu'); /*在声明的时候即初始化该嵌套表

*/
    begin
        for nameIndex in 1..3 loop
            dbms_output.put_line(na(nameIndex));
        end loop;
    end;

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, 变量
, index
, 类型
, 元素
, 联合
, oracle数组类型
, table嵌套
, Table嵌套Table
, 嵌套表
联合数组
,以便于您获取更多的相关知识。

时间: 2025-01-20 12:41:53

Oracle学习(十三) 集合的相关文章

Hadoop学习资源集合

Hadoop是一个由Apache基金会所开发的开源分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储.Hadoop得以在大数据处理应用中广泛应用得益于其自身在数据提取.变形和加载(ETL)方面上的天然优势.Hadoop的分布式架构,将大数据处理引擎尽可能的靠近存储. 目录: Awesome Hadoop Hadoop YARN NoSQL Hadoop上的SQL 数据管理 工作流.生命周期及管理 数据提取与整合 DSL 库和工具 实时

【DBA】 Oracle 学习路线

[DBA] Oracle 学习路线 出差归途火车上,有几个小时的时间,正好可以把Oracle 知识的学习框架梳理一下,这些都是Dave对Oracle的一些理解,共初学者参考. 本篇文章只介绍知识点,不涉及具体内容.   1       学习方法 很多初学者一直在门外徘徊的一个重要原因就是没有找到正确的学习方法,其实Oracle 需要系统的学习,这个过程可能需要2-3年.   最好的资料就是Oracle的官方手册:http://docs.oracle.com   当然,Dave的Blog 也是可以

oracle中的集合操作符

oracle中有一类操作符是对集合进行操作的,我们称之为集合操作符(set operator),我们在前面已经分别介绍了每个集合操作符,这里简单总结一下,oracle中的集合操作符号主要有: union(all) 是用来将多个select语句的结果集合进行合并处理.其中union会压缩各个结果集中的重复数据,而union all则不会. intersect 是用来求两个集合的交集. minus是用来从一个结果集中去除另一个集合中包含的部分. 对与各个集合操作符, 需要注意的地方的如下: 除了un

Oracle学习(二十三) 闪回操作(flashback)

Oracle的闪回功能可以在对数据库进行不完全恢复的情况下,对某一个指定的表进行恢复.闪回数据 库是进行时间点恢复的新方法,它能够快速将Oracle恢复到以前的时间,以更正由于逻辑数据损坏或用 户错误而引起的问题.当需要恢复时,可以将数据库恢复到错误前的时间点,并且只恢复改变的数据块 . Oracle中的闪回操作包括以下4种: (1)查询闪回:查询过去某个指定时间.指定实体的数据,恢复错误的数据库更新.删除等. (2)表闪回:使表返回到过去的某一时间的状态,恢复表.取消对表进行的修改. (3)删

Oracle学习笔记之二----查询

oracle|笔记 下面就开始学习oarcle的强大的SQL 查询功能了.  工欲善其事,必先利其器 1.SQL*PLUS Worksheet 与SQL*PLUS    SQL*PLUS  Worksheet 有点类似MS SQL SERVER  中的查询分析器,不过相比之下,SQL*PLUS WorkSheet功能小多了.    SQL*PLUS 是命令行方式的查询.UNIX的用户可能习惯用这个.       

Oracle学习笔记(一)

oracle|笔记 什么是数据库?数据库就是处理数据文件的一批程序.==============================================Oracle数据库中存放有两种类型的信息:. 用户数据是特定应用程序的数据(例如客户发货单).. 系统数据是数据库系统管理自身所需的数据(例如与特定数据库有关的所有数据文件的名称及存放地点).=============================================数据库就是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文

Linq学习(5) 集合操作

本篇介绍Linq的集合操作,继续使用<Linq 学习(3) 语法结构>中介绍的数据源. Count/LongCount Count/LongCount 返回结果集中元素的数量,返回类型分别为int/long. 原型为: public static int Count<TSource>(this IEnumerable<TSource> source[, Func<TSource, bool> predicate]) 姓名长度大于四个字符的学生的数量: var

Oracle学习(八) PL/SQL简介,基本程序结构和语句

1.变量 2.常量 3.基本程序结构和语句 PL/SQL能够驻留在Oracle数据库服务器和Oracle开发工具两个环境中.在这两个环境中,PL/SQL引擎 接受任何PL/SQL块和子程序作为输入,引擎执行过程语句将SQL语句发送给Oracle服务器的SQL语句执行 器执行. 1.PL/SQL变量 (1)变量的声明: 变量通常是在PL/SQL块的声明部分定义的,每一个变量都有一个特定的类型. 变量定义的基本格式为: <变量名> <数据类型>[(宽度):=<初始值>] 如

Oracle学习的一些建议

  学习Oracle是一个漫长艰辛的过程.如果没有兴趣,只是被迫学习,那么是很难学好的.学习到一定程度的时候,要想进一步提高,就不得不接触很多Oracle之外的东西,如Unix,如网络.存储等.因此,要真的决心学好Oracle,就一定要有兴趣.有了兴趣,就会一切变得简单快乐起来.简单总结一下,那就是:兴趣.学习.实践. 如何入门是许多初学者最头疼的事情.Oracle涉及的方面太多了:SQL.管理.优化.备份恢复--那么从哪开始学好呢?如果在大学期间学过数据库理论,或有一定的数据库基础自然很好;如