--Oracle 10g复合数据类型pl/sql集合,集合又可以分为索引表、嵌套表、变长数组
--1、索引表(下标没有长度限制,且可以为负值)
--在9i前,定义索引表时,只能使用binary_integer和pls_integer作为下标的数据类型,
--但是在9i后,下标数据类型还可以使用varchar2
declare
type area_table_type is table of number
index by varchar2(10);
area_table area_table_type;
begin
area_table('北京'):=1;
area_table('上海'):=1;
area_table('广州'):=1;
dbms_output.put_line('第一个元素:'||area_table.first);
dbms_output.put_line('最后一个元素:'||area_table.last);
dbms_output.put_line('第n个元素:'||area_table('北京'));
end;
第一个元素:北京
最后一个元素:上海
第n个元素:1
--2、嵌套表(起始为1,没有长度限制)
--注意:使用嵌套表变量时,必须使用其构造方法初始化
declare
type community_type_name is table of communitytype.name%type;
comtype_name community_type_name;
begin
--使用构造方法初始化
comtype_name:=community_type_name('初始化值');
dbms_output.put_line('赋值前:'||comtype_name(1));
select name into comtype_name(1)
from communitytype
where community_type_id = 'ebook';
dbms_output.put_line('赋值后:'||comtype_name(1));
end;
--3、变长数组(元素下标从1开始,且有最大值)
--注意:当使用varray元素时,必须要使用其构造方法初始化varray元素
declare
type ename_table_type is varray(20) of communitytype.name%type;
ename_table ename_table_type:=ename_table_type('ebook');
begin
select name into ename_table(1) from communitytype
where community_type_id = 'ebook';
dbms_output.put_line('资源库名称:'||ename_table(1));
end;
--二维变长数组
declare
--一维数组
type first_varray_type is varray(10) of int;
--二维数组
type second_varray_type is varray(10) of first_varray_type;
--初始化
variable_varray second_varray_type:=second_varray_type(
first_varray_type(34,23,53,34),
first_varray_type(23,67,95),
first_varray_type(9,4)
);
begin
dbms_output.put_line('显示二维数组所有元素:');
for i in 1..variable_varray.count loop
for j in 1..variable_varray(i).count loop
dbms_output.put_line('variable_varray('||i||','||j||')='||variable_varray(i)(j));
end loop;
end loop;
end;
显示二维数组所有元素:
variable_varray(1,1)=34
variable_varray(1,2)=23
variable_varray(1,3)=53
variable_varray(1,4)=34
variable_varray(2,1)=23
variable_varray(2,2)=67
variable_varray(2,3)=95
variable_varray(3,1)=9
variable_varray(3,2)=4
--多级嵌套表
declare
type al_table_type is table of int;
type nal_table_type is table of al_table_type;
--初始化
nvl nal_table_type:=nal_table_type(
al_table_type(2,4),
al_table_type(5,73)
);
begin
dbms_output.put_line('显示二维嵌套表的所有元素:');
for i in 1..nvl.count loop
for j in 1..nvl(i).count loop
dbms_output.put_line('nvl('||i||','||j||')='||nvl(i)(j));
end loop;
end loop;
end;
显示二维嵌套表的所有元素:
nvl(1,1)=2
nvl(1,2)=4
nvl(2,1)=5
nvl(2,2)=73
--多级索引表
declare
type al_table_type is table of int
index by binary_integer;
type nal_table_type is table of al_table_type
index by binary_integer;
nvl nal_table_type;
--初始化
begin
nvl(1)(1):=10;
nvl(1)(2):=5;
nvl(2)(1):=100;
nvl(2)(2):=50;
dbms_output.put_line('显示二维索引表的所有元素:');
for i in 1..nvl.count loop
for j in 1..nvl(i).count loop
dbms_output.put_line('nvl('||i||','||j||')='||nvl(i)(j));
end loop;
end loop;
end;
显示二维索引表的所有元素:
nvl(1,1)=10
nvl(1,2)=5
nvl(2,1)=100
nvl(2,2)=50
分享到:
相关推荐
Oracle 10g PL/SQL 是Oracle数据库系统中用于创建和管理存储过程、函数、触发器等数据库对象的编程语言。本教程旨在为初学者提供一个全面的学习平台,同时也为经验丰富的开发者提供参考资料。PL/SQL是Oracle特有的...
本书是专门为oracle开发人员而提供的编程指南 通过学习本书 读者不仅可以掌握编写sql语句和pl/sql块的基础知识 而且还可以掌握sql高级特征 正则表达式 flashback查询 merge语句 sql:1999连接 和pl/sql高级特征 ...
同时,PL/SQL支持多种数据类型,包括数值类型(NUMBER)、字符类型(VARCHAR2, CHAR)、日期类型(DATE)等,以及复合类型如记录(RECORD)和表类型(TABLE)。 此外,PL/SQL的包(PACKAGE)概念是将相关的过程和...
2. **数据类型**:PL/SQL支持多种数据类型,包括数值类型(如NUMBER)、字符串类型(如VARCHAR2、CHAR)、日期时间类型(如DATE)、布尔类型(BOOLEAN)以及复合数据类型(如记录和数组)。 3. **变量声明和赋值**...
10. **嵌套表和对象类型**:PL/SQL支持嵌套表和自定义对象类型,这为复杂数据结构的处理提供了可能。 对于初学者,理解并熟练掌握PL/SQL的各项特性和用法至关重要。通过实践和编写小示例,可以逐步提升对PL/SQL的...
通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法,而且可以掌握sql语句和pl/sql的各种基础知识和高级特征(记录...
通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法,而且可以掌握sql语句和pl/sql的各种基础知识和高级特征(记录...
此外,书中还涉及到了ORACLE数据库的安装、存储过程的编写、序列操作、数据类型转换、程序设计指导原则、合并数据库中的数据行(MERGE)、约束、索引、子查询、分页技术等高级主题。 最后,还有关于字符串、数值、...
6. **复合类型**:PL/SQL支持数组、集合和记录等复合类型,这些使得处理复杂数据结构变得可能。手册会详细介绍这些类型的创建和使用。 7. **包(Packages)**:包是将相关的过程、函数和变量封装在一起的一种方式,...
《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...
### PL/SQL手册——Oracle 10g #### 概述 PL/SQL(Procedural Language for SQL)是Oracle数据库的一种内置编程语言,用于增强SQL的功能并支持更复杂的业务逻辑处理。它结合了SQL的数据操作能力和过程化的编程结构...
6. **游标和集合**:学习如何使用游标遍历查询结果,以及操作集合(如INDEX BY数组、VARRAYs和嵌套表)。 7. **记录和指针**:理解PL/SQL中的记录类型,以及如何使用指针在记录和集合中移动。 8. **动态SQL**:...
Oracle PL/SQL是一种强大的编程语言,它将SQL与过程编程语言的特性相结合,为数据库开发提供了丰富的功能。在Oracle数据库环境中,PL/SQL是开发高效、可靠和可维护的数据库应用程序的关键工具。以下是对"Oracle PL/...
在"Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本"中,读者可以深入理解PL/SQL的各种概念和实践技巧。 本书详细讲解了Oracle 11g版本中的PL/SQL语言,这涵盖了从基础语法到高级特性的广泛范围。PL/SQL是...
5. **集合类型**:包括数组(PLS_INTEGER索引的PL/SQL表)和关联数组(索引由非数字类型的值定义),以及如何在集合中插入、删除和迭代元素。 6. **包(PACKAGE)**:创建和使用包来组织相关的过程和函数,实现模块...
此外,PL/SQL还支持集合类型,如VARRAY(可变数组)和TABLE(表类型),这对于处理大量数据非常有用。 这本书的配套源代码可能会涵盖以下几个方面: 1. **基础操作**:包括简单的SQL查询、变量声明、流程控制...
2. **变量和数据类型**:PL/SQL支持多种数据类型,包括数值型(NUMBER、BINARY_INTEGER、PLS_INTEGER)、字符型(VARCHAR2、CHAR)、日期型(DATE)、布尔型(BOOLEAN)以及复合数据类型如记录和数组。 3. **控制...
- 集合是PL/SQL中类似数组的数据结构,包括关联数组、索引表等,能高效处理多值数据。 - 使用集合进行批量操作,可以显著提高数据处理速度和代码简洁度。 4. 高性能PL/SQL: - 使用游标FOR循环代替显式循环,以...
- **集合与记录**:学习如何使用PL/SQL中的集合和记录类型,这些结构可以帮助更高效地处理数据集。 - **游标**:介绍游标的使用方法,包括隐式游标和显式游标,以及如何利用游标遍历查询结果。 #### 四、PL/SQL中的...
- 表类型:使用PL/SQL表类型进行集合操作。 -记录类型:定义和使用记录类型,类似于结构或对象。 5. **程序单元**: - 包(PACKAGE):定义公共接口和私有实现,提高代码复用性。 -存储过程和函数:创建存储在...