ITPub博客

首页 > 数据库 > Oracle > PLSQL Language Referenc-PL/SQL集合和记录-集合类型

PLSQL Language Referenc-PL/SQL集合和记录-集合类型

原创 Oracle 作者:LuiseDalian 时间:2014-03-11 09:44:15 0 删除 编辑

PL/SQL集合和记录

复合数据类型存储的值具有内部结构,可以将整个复合变量作为参数传递给子程序,可以单独地访问复合变量中的内部结构。内部结构可以是scalar或仍是复合类型。PL/SQL允许定义2种类型的复合数据类型:集合记录

在集合中,内部结构总是具有相同的数据类型,被称为元素。可以通过下标访问集合中的每个元素。

变量名(下标);

为了定义一个集合变量,可以先定义一个集合类型,然后使用该集合类型定义变量;也可以使用%TYPE

在记录中,内部结构可以有不同的数据类型,称为。可以通过域的名称来访问记录变量中的每个域。

变量名.域名

创建记录类型变量,可以先定义一个记录类型,然后使用该记录类型定义变量;可以使用%ROWTYPE;也可以使用%TYPE

可以创建包含记录的集合,和包含集合的记录。


 

注意:本章的许多练习中使用到了下面的存储过程:

CREATE OR REPLACE PROCEDURE print (n INTEGER) IS

BEGIN

    IF n IS NOT NULL THEN

        DBMS_OUTPUT.PUT_LINE(n);

    ELSE

        DBMS_OUTPUT.PUT_LINE('NULL');

    END IF;

END print;

集合类型

PL/SQL3种类型的集合:associative数组,VARRAY(可变数组),嵌套表。

集合类型

元素个数

下标类型

密集/稀疏

未初始化

的状态

定义位置

ADT类型?

关联数组

不确定

字符串/

PLS_INTEGER

2者之一

Empty

块或包

VARRAY

确定

INTEGER

始终密集

NULL

块、包、方案

在方案中是

嵌套表

不确定

INTEGER

开始密集,可能会变成稀疏

NULL

块、包、方案

在方案中是

元素个数,如果元素个个数是确定的,则指集合中的最大元素个数;如果元素个数不确定,则最大元素个数是下标的上限值。

密集的:元素之间没有空隙,就是第1个和最后一个元素都被定义并且有值(值可以为NULL)。

EMPTY集合是存在的,但没有元素。给空集合添加元素调用EXTEND方法。

NULL集合是不存在的,把NULL集合变成存在的集合,必须要初始化它(使用它成为EMPTY集合,或给它赋一个非NULL的值),不能使用EXTEND来初始化NULL集合。

定义位置,定义在PL/SQL块中的集合类型是一个局部类型,只有在块中可访问。只有当块是一个单独的存储或包子程序时,才被存储在数据库中

定义在包规范中的集合类型是公有成员。可以在包外通过限定名来引用它。它存储在数据库中。

定义在方案中的集合类型是一个独立的存储类型。使用CREATE TYPE来创建。

PL/SQL复合类型与PL/SQL复合类型的对照关系(problem

哈希表

关联数组

无序表

关联数组

集合

嵌套表

袋子

嵌套表

数组

VARRAY

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1107180/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    5678006