在pl sql
中,集合(collection)
是一组有序的元素组成的对象,这些元素的类型必须一致。
pl sql
将collection
分成3
类,分别为Associative arrays
(也称index-by tables
)、Nested tables
、Varrays
。
Associative arrays
,可以看着是一个数据字典,有key,value
两列。key
值可以是任意数字和字符串,value
值可以是任意对象包括collection
类型的对象。
Nested tables
,可以看着是一个一维数组,可使用数字编号可以依次操作每个数组元素。
Varrays
,可以看着是一个预先已经定义好长度的一维数组,可使用数字编号可以依次操作每个数组元素。
Nested tables
和Varrays
可以做一个字段类型,将数据存储到数据库的表中。使用SQL
可以去操作它。所有的collection
都是一维的,但可以通过创建元素也是collection
的collection
对象来实现多维的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
、只有一个方法可以在
NULL
的collection
上可以被调用,范围boolean
类型的值。如果其他放在在
NULL
的collection
上调用后,会报 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
类型的使用方法,有助于我们开发出高质量的、复杂的应用程序。
分享到:
相关推荐
本文将详细介绍PL/SQL中的两种主要复合数据类型——记录和集合,并探讨它们的定义、使用方法以及实际应用。 #### 二、记录(Record) **1. 记录的概念** 记录是PL/SQL中的一种复合数据类型,它由多个域组成,每个...
- **集合类型**:探讨了PLSQL中集合类型的特点和应用场景。 通过以上知识点的总结,我们可以看到PLSQL作为一种强大而灵活的编程语言,在Oracle数据库的应用开发中扮演着极其重要的角色。无论是从基础概念的理解还是...
#### 总结 PL/SQL Developer是一款功能强大的工具,它不仅支持PL/SQL程序的开发、测试和调试,还提供了众多实用功能,如数据库对象管理、报表生成等。通过深入了解并熟练掌握这些功能,可以极大地提高工作效率和...
PLSQL支持两种类型的集合:索引数组(VARRAYs)和关联数组(Associative Arrays)。它们允许我们存储相同类型的多个元素。记录(RECORD)类型则允许我们创建自定义的数据结构,类似于结构体或类。 七、游标变量和 ...
3. SQL在PLSQL中的使用: PLSQL可以直接嵌入SQL语句,用于数据查询、插入、更新和删除。例如,`SELECT ... INTO ... FROM ...`用于将查询结果赋值给PLSQL变量;`INSERT INTO ... VALUES ...`或`INSERT INTO ... ...
总结来说,PLSQL是Oracle数据库编程的核心工具,结合PLSQL Developer这样的专业开发环境,可以高效地管理和操作Oracle数据库,实现各种复杂的数据处理任务。无论是初学者还是经验丰富的开发者,掌握PLSQL都是提升...
总结来说,PLSQL 7.1是一个功能强大的数据库编程语言,它的中文版使得非英语用户也能方便地进行数据库开发。学习和理解PLSQL的基础知识,以及如何在实际项目中应用,对于提升数据库管理和开发能力具有重要意义。
总结,"Oracle+PLSQL+语法手册"是一本全面覆盖Oracle数据库和PLSQL语言的资源,对于数据库管理员和开发人员来说,是学习和参考的重要工具。它详细讲解了Oracle数据库的基础概念、PLSQL的语法结构以及实际应用,有助...
Oracle集合类型输出参数的PL/SQL存储过程及Java调用主要涉及如何在Oracle数据库中使用存储过程处理集合数据,并在Java应用中调用这些过程。本文档介绍了一种使用索引表作为输出参数的方法,以及如何在Java中处理返回...
编写可重复使用的命令集合,增强自动化处理能力。 ##### 支持命令: 了解和使用内置命令,如SET、EXEC、EXIT等,增强交互性和灵活性。 #### 八、创建与修改非PL/SQL对象 ##### 表定义编辑器: 设计和管理数据库表...
- **特性**:PL/SQL是对SQL的一种扩展,它支持多种数据类型,例如大对象类型和集合类型,并且可以在其中使用条件语句和循环等控制结构。 - **应用**:它可以用来创建存储过程、触发器和程序包,从而为SQL语句的执行...
总结来说,PLSQL程序优化和性能分析是一个涉及多个层面的过程,包括优化SQL语句、合理使用索引、精简代码逻辑,以及借助各种性能分析工具进行问题排查。理解这些原则和技巧,能显著提升数据库系统的整体性能。
总结以上知识点,PL/SQL Developer用户指南详细介绍了该工具的安装、数据库连接、程序编写、测试、性能优化、SQL操作、命令执行、非PL/SQL对象管理、图表制作、工程管理、任务项目处理以及用户界面定制等功能。...
在 12c 版本之前,如果想要从集合中选择数据,则必须在模式级别定义类型,并且只能是嵌套表或可变数组。但在 12c 中,可以将类型定义在程序包规范中,且可以是 index-by 表类型。此外,负载也可以是记录类型,但记录...
此外,PLSQL还包括游标、集合、记录类型、动态SQL、事务管理等高级特性。游标允许逐行处理查询结果,集合则可以存储多个值,记录类型则允许自定义复杂的数据结构。 总结来说,"PLSQL基础入门手册"会涵盖这些基础...
过程编程是PLSQL中的一个重要概念,它允许我们编写一系列执行特定任务的语句,这些语句集合被称为过程。在PLSQL中,我们可以定义一个过程(PROCEDURE),它包含一组可执行的语句,可以有输入参数、输出参数或两者都...
1. 数据库(Database,DB):是由一系列结构化的数据集合组成,用于存储和管理数据。 2. 数据库管理系统(Database Management System,DBMS):负责组织、存储和检索数据库中的数据,使用户可以对数据库进行操作而...
返回列表可以使用 ResultSet 来接收,或者使用 Oracle 的自定义类型来接收。 八、 在存储过程中做简单动态查询 在存储过程中可以使用动态 SQL 来实现简单的查询。动态 SQL 可以使用 EXECUTE IMMEDIATE 语句来执行...
### PLSQL学习笔记知识点 #### 一、变量声明与初始化 **知识点1:变量类型** ...以上是基于给定文件中涉及的PL/SQL知识点总结,涵盖了变量声明与初始化、记录类型、表行类型以及集合类型的操作等重要内容。