`
anike
  • 浏览: 15060 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Oracle三种集合数据类型的比较

阅读更多

PL/SQL中没有数组的概念,他的集合数据类型和数组是相似的。在7.3以前的版本中只有一种集合,称为PL/SQL表,在这之后又有两种集合数据类型:嵌套表和varray。其中varray集合中的元素是有数量限制的,index_by表和嵌套表是没有这个限制的。index-by表是稀疏的,也就是说下标可以不连续,varray类型的集合则是紧密的,他的下标没有间隔。index_by表不能存储在数据库中,但是嵌套表和varray可以被存储在数据库中。

集合在使用时必须先使用type进行定义方可使用

1.index_by表

type type_name is table of element_type [NOT NULL] index by binary_integer

2.嵌套表

type type_name is table of element_type [NOT NULL]

3.varray

type type_name is [varray ¦varying array](max_size) of element_type[NOT NULL]

一,index_by表

TYPE TYPE1 IS TABLE OF VARCHAR2(10) INDEX BY BINARY_INTEGER;

1.使用的时候需要先赋值后读取,至少也要先初期化一下,否则会出现异常:ORA-01403: no data found。

2.这种数组不需要事先指定上限,下标可以不连续,可以是0或负数。

例:v1 TYPE1;

v1(-1) := '-1';
v1(0) := '0';
v1(1) := '1';
DBMS_OUTPUT.put_line(v1(-1)); --访问合法

DBMS_OUTPUT.put_line(v1(2)); --访问非法


二,嵌套表

TYPE TYPE2 IS TABLE OF VARCHAR2(10);

1.必须进行初期化,否则会出现异常:ORA-06531: Reference to uninitialized collection

2.初期化方法:

v1 TYPE2 := TYPE2(); --声明时初期化数组为空

v2 TYPE2 := TYPE2('1','2','3','4','5'); --声明时初期化数组为5个元素

v1 := TYPE2(); --初期化后数组为空

v2 := TYPE2('1','2','3','4','5'); --初期化后数组为5个元素

3.数组元素的访问:

下标从1开始,不能超过数组所有元素的总和,当下标超出允许范围时,出现异常:ORA-06532: Subscript outside of limit

因为不能访问空数组,所以空数组的场合,必须进行数组扩展。

例:v1.EXTEND;

V1(1):= ‘1’; --访问合法

v1(2):= ‘2’; --访问非法,之前必须再次执行v1.EXTEND;

例:v2的下标范围是1~5。

v2(5):= ‘Hello’; --访问合法

DBMS_OUTPUT.put_line(v2(6)); --访问非法

 

三,Varray

TYPE TYPE3 IS ARRAY(5) OF VARCHAR2(10);

由于类型定义时的元素个数限制,所以TYPE3的变量在使用时最大的元素个数不能超过5个。

与嵌套表基本相同(略)

 

四,集合内建函数

集合还有很多内建函数,这些函数称为方法,调用方法的语法如下:

collection.method

下表中列出oracle中集合的方法

方法 描述 使用限制

COUNT 返回集合中元素的个数

DELETE 删除集合中所有元素

DELETE(x) 删除元素下标为x的元素,如果x为null,则集合保持不变 对VARRAY非法

DELETE(x,y) 删除元素下标从X到Y的元素,如果X>Y集合保持不变 对VARRAY非法

EXIST(x) 如果集合元素x已经初始化,则返回TRUE, 否则返回FALSE

EXTEND 在集合末尾添加一个元素 对Index_by非法

EXTEND(x) 在集合末尾添加x个元素 对Index_by非法

EXTEND(x,n) 在集合末尾添加元素n的x个副本 对Index_by非法

FIRST 返回集合中的第一个元素的下标号,对于VARRAY集合始终返回1。

LAST 返回集合中最后一个元素的下标号, 对于VARRAY返回值始终等于COUNT。

LIMIT 返回VARRY集合的最大的元素个数,对于嵌套表和Index_by集合无用。

NEXT(x) 返回在元素x之后及紧挨着它的元素的值,如果该元素是最后一个元素,则返回null。

PRIOR(x) 返回集合中在元素x之前紧挨着它的元素的值,如果该元素是第一个元素,则返回null。

TRIM 从集合末端开始删除一个元素 对index_by不合法

TRIM(x) 从集合末端开始删除x个元素 对index_by不合法

分享到:
评论

相关推荐

    v512工作室_张利国_Java高端培训系列教材_Oracle实用教程_04章_Oracle数据类型和函数.

    数据类型是由一组具有相同特性的值及其上定义的操作组成的一个集合。在现实世界中,为了有效地保存和处理不同类型的信息,我们需要使用不同的数据类型。例如,整型数据用于表示整数值,支持常见的数学运算如加、减、...

    Oracle 10g 操作手册 Oracle数据类型精解

    本操作手册旨在深入解析Oracle 10g的使用,特别是其数据类型的详细信息,同时通过PowerDesigner的实例教程,帮助初学者快速入门并积累实践经验。 一、Oracle数据类型详解 在Oracle数据库中,数据类型定义了列可以...

    Oracle PLSQL集合

    Oracle支持三种主要的集合类型:关联数组、嵌套表和VARRAY。 - 可以在程序的声明部分使用`TYPE`关键字定义特定的集合类型,然后创建该类型的变量实例。 **集合或集合实例** - “集合”可以指代PL/SQL变量,如关联...

    Oracle实用教程_04章_Oracle数据类型和函数[整理].pdf

    Oracle 数据类型是指一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称。在 Oracle 数据库中,数据类型可以分为字符型、数值型、日期型和其它类型等几类。 Oracle 数据类型的使用和研究是早于计算机...

    Oracle的错误集合

    在Oracle数据库管理中,经常会遇到各种错误,本文主要讨论了三个常见的Oracle错误及其解决方案。 首先,关于用户和修改用户密码的问题。Oracle数据库默认有一些预设的用户名和密码,例如Scott/tiger,System/...

    oracle 自定义数据结构和表类型实验

    4. 分析与讨论:讨论自定义类型在实际问题中的应用,比较其优缺点,以及与标准数据类型的区别。 5. 实践应用:给出一个或多个实际场景,解释如何利用自定义数据结构和表类型解决特定问题。 通过这个实验,你不仅会...

    Oracle数据类型详解

    在Oracle 10g这个版本中,数据类型是构建数据库结构的基础,它们定义了存储在表中的数据的格式和特性。理解Oracle数据类型对于数据库设计、开发和管理至关重要。以下是Oracle 10g中数据类型的详细讲解: 1. **数值...

    oracle(数据类型函数).

    里面有详细的oracle函数 1、Oracle数据类型 2、Oracle函数分为单行函数和多行函数两大类(sql_function) 单行函数分类 字符函数 数值函数 日期函数 转换函数 通用函数 函数嵌套 分组函数:集合操作符(了解) 实现...

    oracle sql集合

    ### Oracle SQL 集合知识点详解 #### 一、Oracle 安装完成后的初始口令 在Oracle数据库安装完成后,存在一系列预设的账号及其初始密码。这些账号对于数据库的安全性和管理至关重要。以下是一些常见账号及其初始口令...

    ORCL数据库相关文档.rar_ORCL数据集合_Oracle命令集合_busy7dm_globewxf_oracle

    使用`CREATE TABLE`语句,我们可以定义表的结构,包括字段名、数据类型、约束条件等。例如,`CREATE TABLE Employees (ID INT PRIMARY KEY, Name VARCHAR2(50), Salary NUMBER);` 这个命令会创建一个名为Employees的...

    Java调用oracle函数返回oracle类(类似)集合

    在Java中调用Oracle函数并处理返回的Oracle特定数据类型,如集合或索引表,通常涉及到Oracle的PL/SQL包和Java的JDBC驱动。以下是对这个主题的详细说明: 1. **Oracle索引表类型**: Oracle索引表是一种PL/SQL数据...

    MLDN Oracle SQL语句集合

    Oracle支持多种数据类型,如数值类型(NUMBER、INTEGER、BINARY_INTEGER)、字符串类型(VARCHAR2、CHAR)、日期时间类型(DATE、TIMESTAMP)以及二进制数据类型(BLOB、CLOB)等。理解并正确选择数据类型对于数据...

    Oracle_10g数据仓库实践

    - **Oracle Discoverer**:一种用于数据查询、报表和分析的工具。 - **Oracle BI Beans**:一套用于构建商业智能应用的Java类库。 - **Oracle Portal**:用于创建个性化门户站点的产品。 ##### 2.2.7 Oracle ...

    oracle学习参考集合

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级数据存储、管理和处理方面具有卓越的性能。"Oracle学习参考集合"是一个丰富的资源库,涵盖了Oracle数据库的多个关键领域,包括性能调整和安装等...

    oracle常用函数和类型

    Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的数据类型和函数来支持复杂的数据操作和处理。在Oracle中,数据类型是定义变量、列或者常量的格式,而函数则是执行特定任务的预定义过程。 首先,让...

    适合新手的oracle练习题集合

    2. **数据类型**:Oracle支持多种数据类型,如NUMBER、VARCHAR2、DATE、BLOB等。练习题会涉及选择合适的数据类型,以及如何处理不同类型的数据。 3. **表的关系与约束**:理解实体之间的关系(一对一、一对多、多对...

    Oracle复合类型之RECORD

    Oracle复合类型之RECORD是Oracle数据库中的一种复杂数据类型,它允许用户定义一个包含多个字段的记录类型,类似于结构体或对象。 RECORD类型可以用于存储和处理复杂数据,使得数据库开发更加灵活和高效。 在学习...

    mysql与oracle数据类型对应关系.docx

    MySQL 和 Oracle 是两种广泛使用的数据库管理系统,它们各自有一套不同的数据类型。本篇文章将详细介绍 MySQL、Oracle 和 Java 之间对应的数据类型,并讨论其在实际应用中的用法。 1. **MySQL 数据类型** - `...

    Oracle 表空间与数据文件

    Oracle 表空间的创建可以使用 CREATE TABLESPACE 语句,包括 BIGFILE、SMALLFILE 和 TEMPORARY 三种类型。创建表空间时需要指定数据文件的路径和名称,数据文件的大小和存储方式等。创建表空间时还需要指定表空间的...

Global site tag (gtag.js) - Google Analytics