定义了一个类型:索引表(PL/SQL表或数组)

解决方案 »

  1.   

    8.9 PL/SQL表
    在学习关系数据库理论时,很有趣的是,由两个或多个表联接构成的查询结果本身就是
    一个表。常常需要用P L / S Q L循环查询一组数据并对一组查询值进行比较。P L / S Q L允许将这
    些被查询的表装入内存,以减少引用它们的数据时所需的I / O操作。
    本书很多地方都谈到了数据类型—字符、字母数字、数值等等。而P L / S Q L表却是用一个
    用户定义类型表来说明的。考查下面程序,看看为了查找目的是怎样将美国的州表装入内存的。
    set serveroutput on size 100000
    d e c l a r e
    state_rec state%rowtype;- - s t a t e _ s p e c 与s t a t e 表的行具有相同的组成
    type just_names is table of state.name%type
    index by binary_integer; - -局部表j u s t _ n a m e 包含了和s t a t e 表每一行
    i binary_integer := 0; - -相同组成的“行”
    nametab just_names;
    b e g i n
    for state_rec in - -注意行是怎样用这个嵌入f o r 循环的语句
    - - 从s t a t e 表中抽取出来的(select name from state)
    l o o p
    i := i+1;
    nametab(i) := state_rec.name;
    d b m s _ o u t p u t . p u t _ l i n e ( n a m e t a b ( i ) ) ;
    end loop;
    e n d ;
    /
    从s t a t e表中读出的前几行名字输出如下:
    A l a s k a
    A l a b a m a
    A r k a n s a s
    注意P L / S Q L表为P L / S Q L的版本2 . 3所支持,以前的版本都不支持。