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

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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/17013648/viewspace-1107180/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值