`

Oracle数组学习--01

阅读更多
COUNT             返回集合中元素的个数 
DELETE            删除集合中所有元素 
DELETE(x)         删除元素下标为x的元素      对VARRAY非法  
DELETE(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个元素之后及紧挨着它的元素值,如果x是最后一个元素,返回null. 
PRIOR(x)          返回在第x个元素之前紧挨着它的元素的值,如果x是第一个元素,则返回null。 
TRIM              从集合末端开始删除一个元素  对于index_by不合法 
TRIM(x)           从集合末端开始删除x个元素 

 关于ORACLE中的数组:记录同集合
1. 集合可以有三种实现方式:
     1.1 自定义一个TYPE使用VARRAY来得到一个数组但只能对基本类型定义如:

CREATE TYPE 类型名 AS VARRAY OF VARCHAR2(20);

   1.2 自定义一个TYPE使用VARRAY来得到一个数组但只能对基本类型定义如:

CREATE TYPE 类型名 AS VARRAY(52) OF VARCHAR2(20);

  不能使用如下:

  CREATE TYPE 类型名 AS VARRAY(52) OF 表名%ROWTYPE;
  注意:使用VARRAY时一定要先指定数组大小

1.一维数组:
    declare 
         type arr_type is array(3) of varchar2(20);  --声明一个长度为3的varchar2类型数组
         test_arr arr_type:=arr_type('f','x','z');   --定义一个arr_type 类型变量
     begin
         for i in 1..test_arr.count loop
                 dbms_output.put_line(test_arr(i));
         end loop;
     end;

 

 2.内嵌表如:
    TYPE 类型名 IS TABLE OF 具体类型如:(表名%ROWTYPE);
    内嵌表数组分二种:

              Index_by表同嵌套表如上的就是嵌套表而Index_by表只要在其尾回上

              INDEX BY BINARY_INTEGER就可以了

   

DECLARE 
    TYPE t_test1 IS TABLE OF test.id%TYPE;
    TYPE t_test2 IS VARRAY (10) OF test.id%TYPE;
    var_test1 t_test1;
    var_test2 t_test2;
begin
--var_test1(1) := ('test1.1'); --没有初始化不能赋值
var_test1 := t_test1('test1.1','test1.2','test1.3');
      dbms_output.put_line('var_test1: '||var_test1(1)||','||var_test1(2)||','||var_test1(3));
var_test2 := t_test2('test2.1','test2.2','test2.3');
      dbms_output.put_line('var_test2: '||var_test2(1)||','||var_test2(2)||','||var_test2(3));
var_test1(2) := 'test1.2_update';
      dbms_output.put_line('==== 修改了var_test1(2) ====');
      dbms_output.put_line('var_test1: '||var_test1(1)||','||var_test1(2)||','||var_test1(3));
      dbms_output.put_line(var_test1.next(3));
      dbms_output.put_line('var_test2元素个数: '||var_test2.limit());
end;

   嵌套表的元素可以是集合,注意赋值的时候是varray_element.record_column := 的形式.
   除了构造函数外,集合还有很多内建函数,按照面向对象编成的叫法称之为方法。

 

 

 

分享到:
评论

相关推荐

    Oracle学习笔记(嵌套表、可变数组)

    Oracle学习笔记(嵌套表、可变数组),有具体的代码案例供大家参考

    Oracle11g-PLSQLBasic-ppt

    在"Oracle11g-PLSQLBasic"这套资料中,你可以学习到以下一系列关于PL/SQL的基础知识: 1. **Les01-Introduction to PLSQL**:这部分内容通常会介绍PL/SQL的基本概念,包括其结构、块的概念(如声明部分、执行部分和...

    Oracle2BPL-SQL.rar_oracle_pl/sql

    Oracle PL/SQL是一种强大的编程语言,它...学习PL/SQL对于开发Oracle数据库应用程序、维护数据库逻辑和优化性能至关重要。通过阅读Oracle2BPL-SQL.pdf,初学者可以逐步掌握这一强大工具,提升数据库管理和开发的能力。

    Oracle+PL-SQL语言初级教程

    在“Oracle+PL-SQL语言初级教程.pdf”这本书中,你将逐步深入这些主题,通过实例学习和实践,从而建立起对Oracle PL/SQL的坚实基础。无论你是数据库管理员还是软件开发者,这都将是你提升技能、有效管理Oracle数据库...

    oracle学习

    oracle学习--动态数组测试,创建一个数组类型FORALL && BULK COLLECT

    Oracle-call-interface-programmers-guide.pdf

    Oracle Call Interface (OCI)...通过OCI编程指南的学习,开发者可以编写出运行效率高、稳定可靠且具备良好扩展性的应用程序,这些应用程序能够充分利用Oracle数据库的强大功能,为最终用户提供稳定且高效的数据库服务。

    Oracle-Pl-Sql 内部培训课件

    通过这份内部培训课件,学习者将能掌握如何编写高效、稳定的PL/SQL代码,解决实际的数据库管理问题,并提升在Oracle数据库环境中的开发能力。深入研究这些概念和示例,将有助于你成为一个熟练的Oracle PL/SQL开发者...

    高级oracle-plsql-培训资料

    在“高级Oracle PL/SQL培训资料”中,我们可以深入学习和掌握一系列高级特性和实践技巧,帮助我们成为更优秀的Oracle数据库开发者。 首先,我们要理解PL/SQL的基本结构,包括声明部分、执行部分和异常处理部分。...

    Oracle-Pl-Sql 培训 PPT

    Oracle PL/SQL的学习需要深入理解这些基本概念和高级特性,并结合实际项目进行实践,才能发挥其强大的功能,高效地开发和维护Oracle数据库应用。通过上述的培训PPT,你可以系统地学习和掌握这些知识,提升你的Oracle...

    oracle的pl-sql源代码

    Oracle的PL/SQL是Oracle数据库系统中的一个强大的过程编程语言,它结合了SQL查询功能与传统的编程语言元素,如变量、循环、条件判断和异常处理。在这个“Oracle的PL/SQL源代码”压缩包中,我们可以找到一系列练习,...

    Oracle 数组的学习 小知识也要积累,养成好的学习态度

    ### Oracle 数组类型详解 #### 一、引言 在Oracle数据库中,数组是一类非常重要的数据结构,它能够帮助开发者高效地处理大量的数据。本文将深入探讨Oracle中的三种主要数组类型:`INDEX BY TABLE`(索引表)、`...

    oracle-ocjp808-题库.zip

    "oracle-ocjp808-题库.zip" 文件显然包含了与这个认证考试相关的练习题和学习资源,特别是"oracle-ocjp808-题库.pdf",很可能是模拟试题或学习指南。 在Java SE 8中,有很多关键知识点是OCJP考试的重点,以下是一些...

    oracle bpel

    - 具备基本的BPEL流程构建知识,例如通过Oracle BPEL Designer教程“开发Hello World BPEL流程”(教程1)和“开发信用流BPEL流程”(教程2)所学习的内容。 - 为了补充本教程中提供的信息或加深理解,可以参考相关的...

    Oracle PL-SQL 中联模拟笔试题

    5. **集合类型**:数组、关联数组(VARRAYs)和嵌套表(Nested Tables)等集合类型的使用,以及PL/SQL中的集合操作。 6. **表函数和管道函数**:掌握如何定义和使用自定义的表函数,以及如何通过管道操作将结果集...

    整理:oracle pl/sql 入门+ 数组使用+游标+动态SQL

    在这个“整理:Oracle PL/SQL 入门+数组使用+游标+动态SQL”文档中,我们将深入探讨这四个关键概念。 1. Oracle PL/SQL入门: - PL/SQL的基本结构:PL/SQL由声明部分、执行部分和异常处理部分组成,用于定义变量、...

    TestKing Oracle 1z0-007 V12

    - 集合:数组、关联数组、索引表和记录类型的定义与操作,以及集合操作符的应用。 - 文件操作:通过UTL_FILE包进行文件的读写,以及在PL/SQL中进行I/O操作。 通过Oracle 1z0-007 V12的考试,开发者将能够熟练地在...

    精典oracle PL-SQL编程-最好教材

    5. **集合类型**:掌握PL/SQL中的数组、索引表和关联数组,以及如何在PL/SQL中操作这些集合类型。 6. **记录类型**:学习如何定义和使用记录类型,这允许你创建自定义的数据结构来存储和操作数据。 7. **事务管理*...

    oracle-ocjp808-题库.pdf

    根据提供的文件信息,文件标题为“oracle-ocjp808-题库.pdf”,描述为“Oracle Exam 1z0-808...如果考生在使用这份题库时遇到题目不完整或答案解析有疑问的情况,应参考官方文档或通过其他学习资源来补全或验证知识点。

Global site tag (gtag.js) - Google Analytics