`
mikixiyou
  • 浏览: 1098450 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
C3c8d188-c0ab-3396-821d-b68331e21226
Oracle管理和开发
浏览量:352969
社区版块
存档分类
最新评论

PLSQL集合类型的使用总结

阅读更多

pl sql 中,集合(collection) 是一组有序的元素组成的对象,这些元素的类型必须一致。

pl sql collection 分成3 类,分别为Associative arrays (也称index-by tables )、Nested tablesVarrays

Associative arrays ,可以看着是一个数据字典,有key,value 两列。key 值可以是任意数字和字符串,value 值可以是任意对象包括collection 类型的对象。

Nested tables ,可以看着是一个一维数组,可使用数字编号可以依次操作每个数组元素。

Varrays ,可以看着是一个预先已经定义好长度的一维数组,可使用数字编号可以依次操作每个数组元素。

Nested tables Varrays 可以做一个字段类型,将数据存储到数据库的表中。使用SQL 可以去操作它。所有的collection 都是一维的,但可以通过创建元素也是collectioncollection 对象来实现多维的collection

 

(miki西游 @mikixiyou 原文链接: http://mikixiyou.iteye.com/blog/1607889 )

 

一、操作collection 对象

所有的操作collection 对象的方法分别是COUNT, DELETE, EXISTS, EXTEND, FIRST,LAST, LIMIT, NEXT, PRIOR  TRIM

1 、这些方法在存储过程和函数中用于操作collection 对象,使用点语法调用。注意,他们都不能在SQL 语句中直接使用。

2 extend  trim 方法不能在Associative arrays 中使用;因为数据字典中根本不需要去扩展它的,当然也不知道怎么扩展。

3 exists,count,limit,first,last,prior,next 是函数,有返回值的;

4 extend,trim,delete 是存储过程,没有返回值,执行就执行了;

5 exists,prior,next,trim,extend,delete 调用的参数对应于collection 的下标描述符,通常这些描述符都是数字,但是在associative arrays 中,有可能是字符窜。

6 、只有一个方法可以在  NULLcollection 上可以被调用,范围boolean 类型的值。如果其他放在在  NULLcollection 上调用后,会报 COLLECTION_IS_NULL 错误。

 

二、测试过程

create or replace procedure sp_run_program as
  type typ_array is table of integer;
  type typ_dict is table of varchar2(100) index by varchar2(10);
  type typ_varray is varray(3) of varchar2(10);
  v_array  typ_array := typ_array();
  v_dict   typ_dict;
  v_varray typ_varray := typ_varray(null, null, null);

begin

  v_array.extend(2);

  dbms_output.put_line('The v_array''s count is ' || v_array.count);

  v_array(1) := 1;
  for i in v_array.first .. v_array.last loop
    dbms_output.put_line('The v_array(' || i || ') is ' || v_array(i));
  end loop;

  v_dict('one') := 'day';
  v_dict('two') := 'week';

  dbms_output.put_line('The v_dict(''one'') is ' ||
                       nvl(v_dict('one'), 'null'));

  dbms_output.put_line('The v_dict(''two'') is ' ||
                       nvl(v_dict('two'), 'null'));

  v_varray(1) := 'a';
  v_varray(2) := 'b';

  for i in v_varray.first .. v_varray.last loop
    dbms_output.put_line('The v_varray(' || i || ') is ' ||
                         nvl(v_varray(i), 'null'));
  end loop;

  v_varray.trim(1);
  dbms_output.put_line('The v_varray trim(1)');

  for i in v_varray.first .. v_varray.last loop
    dbms_output.put_line('The v_varray(' || i || ') is ' ||
                         nvl(v_varray(i), 'null'));
  end loop;
  v_varray.extend(1);
  dbms_output.put_line('The v_varray extend(1)');
  for i in v_varray.first .. v_varray.last loop
    dbms_output.put_line('The v_varray(' || i || ') is ' ||
                         nvl(v_varray(i), 'null'));
  end loop;

  if (v_varray.EXISTS(4)) then
    dbms_output.put_line('The v_varray(4) is exists.');
  else
    dbms_output.put_line('The v_varray(4) is not exists.');
  end if;

end sp_run_program;
 

 

出的结果如下:

The v_array's count is 2

The v_array(1) is 1

The v_array(2) is

The v_dict('one') is day

The v_dict('two') is week

The v_varray(1) is a

The v_varray(2) is b

The v_varray(3) is null

The v_varray trim(1)

The v_varray(1) is a

The v_varray(2) is b

The v_varray extend(1)

The v_varray(1) is a

The v_varray(2) is b

The v_varray(3) is null

The v_varray(4) is not exists.


 

      使用collection,我实现一个计算器程序的开发,程序链接: http://mikixiyou.iteye.com/blog/1605823

 

简而言之,数量掌握collection  类型的使用方法,有助于我们开发出高质量的、复杂的应用程序。

 

 

 

 

3
7
分享到:
评论

相关推荐

    plsql复合数据类型

    本文将详细介绍PL/SQL中的两种主要复合数据类型——记录和集合,并探讨它们的定义、使用方法以及实际应用。 #### 二、记录(Record) **1. 记录的概念** 记录是PL/SQL中的一种复合数据类型,它由多个域组成,每个...

    PLSQL应用程序开发

    - **集合类型**:探讨了PLSQL中集合类型的特点和应用场景。 通过以上知识点的总结,我们可以看到PLSQL作为一种强大而灵活的编程语言,在Oracle数据库的应用开发中扮演着极其重要的角色。无论是从基础概念的理解还是...

    plsql中文使用说明

    #### 总结 PL/SQL Developer是一款功能强大的工具,它不仅支持PL/SQL程序的开发、测试和调试,还提供了众多实用功能,如数据库对象管理、报表生成等。通过深入了解并熟练掌握这些功能,可以极大地提高工作效率和...

    PLSQL高级编程-结构化编程

    PLSQL支持两种类型的集合:索引数组(VARRAYs)和关联数组(Associative Arrays)。它们允许我们存储相同类型的多个元素。记录(RECORD)类型则允许我们创建自定义的数据结构,类似于结构体或类。 七、游标变量和 ...

    plsql&&oracle

    3. SQL在PLSQL中的使用: PLSQL可以直接嵌入SQL语句,用于数据查询、插入、更新和删除。例如,`SELECT ... INTO ... FROM ...`用于将查询结果赋值给PLSQL变量;`INSERT INTO ... VALUES ...`或`INSERT INTO ... ...

    PLSQL操作ORALCE数据库

    总结来说,PLSQL是Oracle数据库编程的核心工具,结合PLSQL Developer这样的专业开发环境,可以高效地管理和操作Oracle数据库,实现各种复杂的数据处理任务。无论是初学者还是经验丰富的开发者,掌握PLSQL都是提升...

    plsql7.1中文版与原版

    总结来说,PLSQL 7.1是一个功能强大的数据库编程语言,它的中文版使得非英语用户也能方便地进行数据库开发。学习和理解PLSQL的基础知识,以及如何在实际项目中应用,对于提升数据库管理和开发能力具有重要意义。

    Oracle+PLSQL+语法手册 全面 详细 chm

    总结,"Oracle+PLSQL+语法手册"是一本全面覆盖Oracle数据库和PLSQL语言的资源,对于数据库管理员和开发人员来说,是学习和参考的重要工具。它详细讲解了Oracle数据库的基础概念、PLSQL的语法结构以及实际应用,有助...

    Oracle集合类型输出参数的PLSQL存储过程及其Java调用.doc

    Oracle集合类型输出参数的PL/SQL存储过程及Java调用主要涉及如何在Oracle数据库中使用存储过程处理集合数据,并在Java应用中调用这些过程。本文档介绍了一种使用索引表作为输出参数的方法,以及如何在Java中处理返回...

    Oracle PLSQL程序设计

    - **特性**:PL/SQL是对SQL的一种扩展,它支持多种数据类型,例如大对象类型和集合类型,并且可以在其中使用条件语句和循环等控制结构。 - **应用**:它可以用来创建存储过程、触发器和程序包,从而为SQL语句的执行...

    PLSQL程序优化和性能分析方法

    总结来说,PLSQL程序优化和性能分析是一个涉及多个层面的过程,包括优化SQL语句、合理使用索引、精简代码逻辑,以及借助各种性能分析工具进行问题排查。理解这些原则和技巧,能显著提升数据库系统的整体性能。

    PLSQL Developer用户指南.pdf

    总结以上知识点,PL/SQL Developer用户指南详细介绍了该工具的安装、数据库连接、程序编写、测试、性能优化、SQL操作、命令执行、非PL/SQL对象管理、图表制作、工程管理、任务项目处理以及用户界面定制等功能。...

    12c 的新 PLSQL 功能

    在 12c 版本之前,如果想要从集合中选择数据,则必须在模式级别定义类型,并且只能是嵌套表或可变数组。但在 12c 中,可以将类型定义在程序包规范中,且可以是 index-by 表类型。此外,负载也可以是记录类型,但记录...

    PLSQL基础入门手册

    此外,PLSQL还包括游标、集合、记录类型、动态SQL、事务管理等高级特性。游标允许逐行处理查询结果,集合则可以存储多个值,记录类型则允许自定义复杂的数据结构。 总结来说,"PLSQL基础入门手册"会涵盖这些基础...

    PLSQL编程05

    过程编程是PLSQL中的一个重要概念,它允许我们编写一系列执行特定任务的语句,这些语句集合被称为过程。在PLSQL中,我们可以定义一个过程(PROCEDURE),它包含一组可执行的语句,可以有输入参数、输出参数或两者都...

    plsql基本語法

    1. 数据库(Database,DB):是由一系列结构化的数据集合组成,用于存储和管理数据。 2. 数据库管理系统(Database Management System,DBMS):负责组织、存储和检索数据库中的数据,使用户可以对数据库进行操作而...

    Oracle PlSql 存储过程

    返回列表可以使用 ResultSet 来接收,或者使用 Oracle 的自定义类型来接收。 八、 在存储过程中做简单动态查询 在存储过程中可以使用动态 SQL 来实现简单的查询。动态 SQL 可以使用 EXECUTE IMMEDIATE 语句来执行...

    PLSQL学习笔记

    ### PLSQL学习笔记知识点 #### 一、变量声明与初始化 **知识点1:变量类型** ...以上是基于给定文件中涉及的PL/SQL知识点总结,涵盖了变量声明与初始化、记录类型、表行类型以及集合类型的操作等重要内容。

Global site tag (gtag.js) - Google Analytics